FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Codeur / décodeur Base64 et Base64URL Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Codeur / décodeur Base64 et Base64URL Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Codeur / décodeur Base64 et Base64URL Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Codeur / décodeur Base64 et Base64URL Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Codeur / décodeur Base64 et Base64URL Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Codeur / décodeur Base64 et Base64URL Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Codeur / décodeur Base64 et Base64URL Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Codeur / décodeur Base64 et Base64URL Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Codeur / décodeur Base64 et Base64URL Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Codeur / décodeur Base64 et Base64URL Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Codeur / décodeur Base64 et Base64URL Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Codeur / décodeur Base64 et Base64URL Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Codeur / décodeur Base64 et Base64URL Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Codeur / décodeur Base64 et Base64URL Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Codeur / décodeur Base64 et Base64URL Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -55%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
49.99 €

 

 Codeur / décodeur Base64 et Base64URL

Aller en bas 
2 participants
AuteurMessage
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Codeur / décodeur Base64 et Base64URL Empty
MessageSujet: Codeur / décodeur Base64 et Base64URL   Codeur / décodeur Base64 et Base64URL EmptyMer 27 Oct 2021 - 22:37

Bonjour à tous !

Suite à mon essai de codage en Base64, j’ai réalisé ce petit utilitaire qui code et décode la base64 et la base64URL.

Oui, il est un peu "flashy" ! (clin d’œil à JJN4)

Codeur / décodeur Base64 et Base64URL Base6413


Code:
' Codage et décodage base64 et base64URL
' Marc - octobre 2021
dim base64$(63,1)

label redim, effacer1, effacer2, coder, decoder

interfaceUtilisateur()
creerTableBase64()

end


effacer1:
    clear 4
    clear 5
return


effacer2:
    clear 6
    clear 7
return


coder:
    if number_click = 9
        encodageBase64(0)
        sprite_text 5,"Texte codé en base64 :"
        sprite_position 5,325,42
    else
        encodageBase64(1)
        sprite_text 5,"Texte codé en base64URL :"
        sprite_position 5,325,42
    end_if    
return


decoder:
    decoderBase64()
return

sub decoderBase64()
    dim_local b$, index%, car$, i%, carbin6$, chainebin$, carDec8%, carBin8$, txt$
    
    clear 7
    b$ = text$(6)
    for index% = 1 to len(b$)
        car$ = mid$(b$,index%,1)        
        if car$ = "-" or car$ = "_"
            i%  = instr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",car$)
        else
            i%  = instr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",car$)
        end_if    
        if i% > 0
            i% = i% - 1
            
            ' conversion décimal vers binaire
            carBin6$ = ""
            while i% > 0
                if frac(i% / 2) = 0
                    carBin6$ = "0" + carBin6$
                else
                    carBin6$ = "1" + carBin6$
                end_if
                i% = INT(i% / 2)
           end_while
            
           ' formatage sur 6 bits
           while len(carBin6$) < 6
               carBin6$ = "0" + carBin6$
           end_while            

           chainebin$ = chainebin$ + carBin6$
        end_if    
    next index%

    ' lecture chaineBin$ par groupe de 8 octets
    for index% = 1 to len(chaineBin$) step 8
        carDec8% = 0
        carBin8$ = mid$(chaineBin$,index%,8)
        ' conversion binaire vers decimal
         WHILE carBin8$ <> ""
             carDec8% = (carDec8% * 2) + INSTR("01",LEFT$(carBin8$,1))-1
             carBin8$ = RIGHT$(carBin8$,LEN(carBin8$)-1)
         END_WHILE

         txt$ = txt$ + chr$(carDec8%)
    next index%
    
    text 7,txt$
end_sub


sub encodageBase64(type%)
    dim_local a$, b%, octet$, d$, e%, n%, m%, p%, groupe24Ascii$, groupe24binaire$, index%, texteBase64$, ajout$
    
    clear 5
    a$ = text$(4)
    
    if a$ = ""
        exit_sub
    end_if
    
    ' lecture de la chaine a$ par groupes de 24 bits (3 octets)
    for index% = 1 to len(a$) step 3
        groupe24Ascii$ = mid$(a$,index%,3)

        ' conversion en binaire, de groupe24Ascii$ en groupe24binaire$
        for n% = 1 to len(groupe24Ascii$)
            b% = asc(mid$(groupe24Ascii$,n%,1))

            while b% > 0
                if frac(b% / 2) = 0
                    octet$ = "0" + octet$
                else
                    octet$ = "1" + octet$
                end_if
                b% = INT(b% / 2)
           end_while
          
           while len(octet$) < 8
               octet$ = "0" + octet$
           end_while            

           groupe24Binaire$ = groupe24Binaire$ + octet$
           octet$ = ""
        next n%

        ' compléter groupe24Binaire$ jusqu'à concurrence de 24 bits
        if len(groupe24Binaire$) < 24
            if len(groupe24Binaire$) = 16
                groupe24Binaire$ = groupe24Binaire$ + "00"
                ajout$ = "="
            else
                groupe24Binaire$ = groupe24Binaire$ + "0000"
                ajout$ = "=="
            end_if
        end_if

        ' lecture par groupe de 6 bits + codage
        for p% = 1 to len(groupe24binaire$) step 6  
            e% = 0
            d$ = mid$(groupe24Binaire$,p%,6)
            WHILE d$ <> ""
                e% = (e% * 2) + INSTR("01",LEFT$(d$,1))-1
                d$ = RIGHT$(d$,LEN(d$)-1)
            END_WHILE
            texteBase64$ = texteBase64$ + base64$(e%,type%)
        next p%
        groupe24Binaire$ = ""
    next index%

    if type% = 0
        text 5,texteBase64$ + ajout$
    else
        text 5,texteBase64$
    end_if
    
end_sub



sub creerTableBase64()
    dim_local n%
    
    ' Deux bases 64 sont créées :
    ' base64 => base64$(_,0)
    ' base64URL => base64$(_,1)

    for n% = 0 to 25 :' lettres majuscules "A" à "Z"
        base64$(n%,0) = chr$(65 + n%)
        base64$(n%,1) = chr$(65 + n%)
    next n%

    for n% = 26 to 51 :' lettres minuscules "a" à "z"
        base64$(n%,0) = chr$(97 + n% - 26)
        base64$(n%,1) = chr$(97 + n% - 26)
    next n%

    for n% = 52 to 61 :' chiffres de "0" à "9"
        base64$(n%,0) = chr$(48 + n% - 52)
        base64$(n%,1) = chr$(48 + n% - 52)
    next n%

    base64$(62,0) = chr$(43) :' "+"
    base64$(62,1) = chr$(45) :' "-"
    base64$(63,0) = chr$(47) :' "/"
    base64$(63,1) = chr$(95) :' "_"
end_sub


sub interfaceUtilisateur()
  
    caption 0,"Base64 : Coder et Décoder un texte"
    width 0,width(0) - width_client(0) + 600
    height 0,height(0) - height_client(0) + 450
    left 0,(screen_x - width(0)) / 2
    top 0,(screen_y - height(0)) / 2
    font_name 0,"Arial"
    font_size 0,"9"
    on_resize 0,redim

    decorArrierePlan()
  
    memo 4
    width 4,230
    top 4,60
    left 4,50
    color 4,255,255,184
    
    memo 5
    width 5,230
    top 5,60
    left 5,320
    color 5,255,255,184

    memo 6
    width 6,230
    top 6,285
    left 6,50
    color 6,255,255,184
    
    memo 7
    width 7,230
    top 7,285
    left 7,320
    color 7,255,255,184
    
    button 9
    top 9,175
    left 9,85
    width 9,130
    caption 9,"Coder en base64"
    on_click 9,coder
    
    button 10
    top 10,175
    left 10,236
    width 10,130
    caption 10,"Coder en base64URL"
    on_click 10,coder

    button 11
    top 11,175
    left 11,385
    width 11,130
    caption 11,"Effacer"
    on_click 11,effacer1
    
    button 12
    top 12,400
    left 12,160
    width 12,130
    caption 12,"Décoder"
    on_click 12,decoder

    button 13
    top 13,400
    left 13,310
    width 13,130
    caption 13,"Effacer"
    on_click 13,effacer2
    
    legendes()

end_sub

sub decorArrierePlan()
    dim_local n%
    picture 1
    width 1,600
    height 1,450
    
    scene2d 2
    width 2,600
    height 2,450
    
    2d_target_is 1
    for n% = 0 to 600
        2d_pen_color 160,60,n%/3
        2d_line n%,0,n%,225
    next n%
    
    for n% = 0 to 600
        2d_pen_color 0,60,200-n%/3
        2d_line n%,225,n%,450
    next n%

    image 3
    2d_image_copy 3,0,0,599,449
    
    sprite 1
    sprite_image_load 1,3
    hide 1
end_sub


sub legendes()
    font_color 2,230,230,230
    font_size 2,14

    sprite 2
    sprite_text 2,"Coder"
    sprite_position 2,20,10

    sprite 3
    sprite_text 3,"Décoder"
    sprite_position 3,20,235
    
    font_color 2,255,255,255
    font_size 2,10

    sprite 4
    sprite_text 4,"Tapez ou collez votre texte ici :"
    sprite_position 4,55,42

    sprite 5
    sprite_text 5,"Texte codé en base64 :"
    sprite_position 5,325,42

    sprite 6
    sprite_text 6,"Tapez ou collez votre texte ici :"
    sprite_position 6,55,267

    sprite 7
    sprite_text 7,"Texte décodé :"
    sprite_position 7,325,267
end_sub


redim:
    width 0,width(0) - width_client(0) + 600
    height 0,height(0) - height_client(0) + 450
return

Pour le codage, vous avez le choix entre la Base64 et la Base64URL.
Pour le décodage c’est automatique, le programme détecte la base à employer.
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Codeur / décodeur Base64 et Base64URL Empty
MessageSujet: Re: Codeur / décodeur Base64 et Base64URL   Codeur / décodeur Base64 et Base64URL EmptySam 30 Oct 2021 - 15:05

Ouaaaah !!!
Oui, alors là, super flashy, alors !!!!
Chapeau, super codage !!
En plus, en base 64, c'est l'avenir, il paraît !
cheers elephant
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
 
Codeur / décodeur Base64 et Base64URL
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» sauvegarde décodeur...
» Décodage base64
» Coder un texte en base64

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: