Base64

Algorithme utilisé par Up ! System

L'algorithme Base64 de l'Internet Engineering Task Force (IETF) permet d'encoder un flux binaire en un flux texte transformant un paquet de 3 octets en 4 caractères alphabétiques.

Son principe est le suivant :

Si le flux n'est pas composé d'un multiple de trois octets, une 65ème valeur est ajoutée traduisant la fin de flux. Elle correspond au caractère égal =.

La taille de la ligne ne doit pas dépasser 76 caractères une fois encodée. Une ligne non encodée peut être découpée en plusieurs lignes encodées.

Le saut de ligne est représenté par les deux caractères successifs saut de ligne \n et retour chariot \r non encodés.

Table d'encodage

Table générale

Code décimal.Code hexadécimal.Caractère.
0000x00A
0010x01B
0020x02C
0030x03D
0040x04E
0050x05F
0060x06G
0070x07H
0080x08I
0090x09J
0100x0AK
0110x0BL
0120x0CM
0130x0DN
0140x0EO
0150x0FP
0160x10Q
0170x11R
0180x12S
0190x13T
0200x14U
0210x15V
0220x16W
0230x17X
0240x18Y
0250x19Z
0260x1Aa
0270x1Bb
0280x1Cc
0290x1Dd
0300x1Ee
0310x1Ff
0320x20g
0330x21h
0340x22i
0350x23j
0360x24k
0370x25l
0380x26m
0390x27n
0400x28o
0410x29p
0420x2Aq
0430x2Br
0440x2Cs
0450x2Dt
0460x2Eu
0470x2Fv
0480x30w
0490x31x
0500x32y
0510x33z
0520x340
0530x351
0540x362
0550x373
0560x384
0570x395
0580x3A6
0590x3B7
0600x3C8
0610x3D9
0620x3EAddition +
0630x3FDivision /
0640x40Egal =

Table spécifique aux échanges Internet

Code décimal.Code hexadécimal.Caractère.
0000x00A
0010x01B
0020x02C
0030x03D
0040x04E
0050x05F
0060x06G
0070x07H
0080x08I
0090x09J
0100x0AK
0110x0BL
0120x0CM
0130x0DN
0140x0EO
0150x0FP
0160x10Q
0170x11R
0180x12S
0190x13T
0200x14U
0210x15V
0220x16W
0230x17X
0240x18Y
0250x19Z
0260x1Aa
0270x1Bb
0280x1Cc
0290x1Dd
0300x1Ee
0310x1Ff
0320x20g
0330x21h
0340x22i
0350x23j
0360x24k
0370x25l
0380x26m
0390x27n
0400x28o
0410x29p
0420x2Aq
0430x2Br
0440x2Cs
0450x2Dt
0460x2Eu
0470x2Fv
0480x30w
0490x31x
0500x32y
0510x33z
0520x340
0530x351
0540x362
0550x373
0560x384
0570x395
0580x3A6
0590x3B7
0600x3C8
0610x3D9
0620x3ESoustraction -
0630x3FSouligné _
0640x40Egal =

Exemple d'un flux encodé l'algorithme Base64

Flux non encodé

/* ------------------------------------------------------------------- */ /* Fichier : clientftp.upl */ /* Objet : Exemple d'emploi d'Up ! Network. */ /* */ /* Module : Up ! Application System. */ /* Auteur-Date : DUVAL Jean-Pierre - Novembre 2003. */ /* ------------------------------------------------------------------- */ /* Observations */ /* */ /* */ /* ------------------------------------------------------------------- */ Source Composant "Exemple d'emploi d'Up ! Network" Version 4.0.0; ImporterModule UpsFts(, ImporterDefinitions); Variable /******/ MonServeur : Nul Ou ServeurFtp; Principal /*******/ Debut MonServeur=ServeurFtp("ftp://local:21"); MonServeur.ChangerConnexion("anonymous", "contact@mon-domaine.com"); MonServeur.ChangerEtatTypeDonnees(TypeDonneesAscii); CopierFichier("C:/tmp2/essai.txt", "ftp://local:21/tmp/essai.txt"); MonServeur.ChangerEtatTypeDonnees(TypeDonneesImage); CopierFichier("ftp://local:21/tmp/essai.doc", "C:/tmp2/essai.doc"); MonServeur=Nul; Fin Principal

Flux encodé

LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwovKiBGaWNoaWVyICAgIDog Y2xpZW50ZnRwLnVwbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICovCi8qIE9iamV0ICAgICAgOiBFeGVtcGxlIGQnZW1wbG9p IGQnVXAgISBOZXR3b3JrLiAgICAgICAgICAgICAgICAgICAgICAgKi8KLyog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqLwovKiBNb2R1bGUgICAgICA6IFVw ICEgQXBwbGljYXRpb24gU3lzdGVtLiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKi8KLyogQXV0ZXVyLURhdGUgOiBEVVZBTCBKZWFuLVBpZXJyZSAt IE5vdmVtYnJlIDIwMDMuICAgICAgICAgICAgICAgICAgICAqLwovKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICovCi8qICAgICAgICAgICAgICAgICAgICAg ICAgICBPYnNlcnZhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAKLyogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqLyAKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAqLwoKU291cmNlIENvbXBvc2FudCAiRXhlbXBsZSBkJ2VtcGxvaSBkJ1Vw ICEgTmV0d29yayIgVmVyc2lvbiAxLjIuMDsKCkltcG9ydGVyTW9kdWxlIAog ICBVcHNGdHAoPFVwc0Z0cD4sIEltcG9ydGVyRGVmaW5pdGlvbnMpOwoKVmFy aWFibGUKLyoqKioqKi8KICAgTW9uU2VydmV1ciA6IE51bCBPdSBTZXJ2ZXVy RnRwOwoKUHJpbmNpcGFsCi8qKioqKioqLwpEZWJ1dApNb25TZXJ2ZXVyPVNl cnZldXJGdHAoIlVwc0Z0cDovL2xvY2FsOjIxIik7CgpNb25TZXJ2ZXVyLkNo YW5nZXJDb25uZXhpb24oImFub255bW91cyIsICJjb250YWN0QHVwLWNvbXAu Y29tIik7Ck1vblNlcnZldXIuQ2hhbmdlckV0YXRUeXBlRG9ubmVlcyhUeXBl RG9ubmVlc0FzY2lpKTsKQ29waWVyRmljaGllcigiQzovdG1wMi9lc3NhaS50 eHQiLCAiVXBzRnRwOi8vbG9jYWw6MjEvdG1wL2Vzc2FpLnR4dCIpOwpNb25T ZXJ2ZXVyLkNoYW5nZXJFdGF0VHlwZURvbm5lZXMoVHlwZURvbm5lZXNJbWFn ZSk7CkNvcGllckZpY2hpZXIoIlVwc0Z0cDovL2xvY2FsOjIxL3RtcC9lc3Nh aS5kb2MiLCAiQzovdG1wMi9lc3NhaS5kb2MiKTsKTW9uU2VydmV1cj1OdWw7 CkZpbiBQcmluY2lwYWwKCg==