Base64

Un article de Wikipédia, l'encyclopédie libre.

En informatique, base64 est un codage de l'information utilisant 64 caractères, choisis pour être disponible sur la majorité des systèmes. Il est principalement utilisé pour la transmission de messages (courrier électronique et messages de forum Usenet). Il est défini en tant que codage MIME.

Sommaire

[modifier] Description

Un alphabet de 65 caractères est utilisé pour permettre la représentation de 6 bits par caractère. Le '=' (65e caractère) est utilisé dans le processus de codage pour les caractères finaux.

Le processus de codage représente des groupes de 24 bits de données en entrée par une chaîne en sortie de 4 caractères codés. En procédant de gauche à droite, un groupe de 24 bits est créé en concaténant 3 octets (8 bits par octet). Ces 24 bits sont traités comme 4 groupes concaténés de 6 bits chacun convertis en un unique caractère dans l'alphabet de la base 64.

Chaque groupe de 6 bits est utilisé comme index dans la table des caractères de la base 64. Le caractère référencé par l'index correspondant est utilisé comme codage de ce groupe de 6 bits.

    Valeur Codage   Valeur Codage   Valeur Codage   Valeur Codage
         0 A            17 R            34 i            51 z
         1 B            18 S            35 j            52 0
         2 C            19 T            36 k            53 1
         3 D            20 U            37 l            54 2
         4 E            21 V            38 m            55 3
         5 F            22 W            39 n            56 4
         6 G            23 X            40 o            57 5
         7 H            24 Y            41 p            58 6
         8 I            25 Z            42 q            59 7
         9 J            26 a            43 r            60 8
        10 K            27 b            44 s            61 9
        11 L            28 c            45 t            62 +
        12 M            29 d            46 u            63 /
        13 N            30 e            47 v
        14 O            31 f            48 w  (complément) =
        15 P            32 g            49 x
        16 Q            33 h            50 y

Un traitement spécial est effectué si moins de 24 bits sont disponibles à la fin des données à coder. Aucun bit ne restant non-codé, si moins de 24 bits sont disponibles alors des bits à zéro sont ajoutés à la droite des données pour former un nombre entier de groupes de 6 bits. Étant donné que toutes les données d'entrées codées en base 64 sont constituées d'un nombre entier d'octets seuls trois cas sont possibles :

  • si la dernière partie des données d'entrée est constituée d'un nombre de bits multiple de 24, alors le dernier groupe de caractères de sortie sera un multiple de 4 caractères sans complément avec des '=' ;
  • si la dernière partie des données d'entrée fait exactement 8 bits, alors le dernier groupe de caractères de sortie sera composé de deux caractères de codage suivis des deux caractères '=' (de complément) ;
  • si la dernière partie des données d'entrée fait exactement 16 bits, alors le dernier groupe de caractères de sortie sera composé de trois caractères de codage suivis d'un caractère '=' (de complément).

[modifier] Exemple

Prenons le groupe de 3 caractères « Hi! ». Ci-dessous la première ligne indique en binaire l'équivalence de ces 3 octets. La transformation consiste comme on peut le voir, à séparer les bits pour former en sortie 4 groupes de 6 bits :

01001000 01101001 00100001 <=> 010010 000110 100100 100001

Les 4 groupes de 6 bits en sortie nous donnent les valeurs 18, 6, 36 et 33. Ainsi en suivant la correspondance de la table indexée nous obtenons les 4 caractères « SGkh ».


[modifier] Exemple avec OPENSSL

Encodage d'un fichier texte en base64 (sous linux)

$ openssl enc -base64 -in monfichier.txt -out monfichier.b64


Décodage d'un fichier texte en base64 (sous linux)

$ openssl enc -d -base64 -in monfichier.b64 -out monfichier.txt

[modifier] Liens externes

[modifier] Ressources