- Base 64
-
Base64
En informatique, base64 est un codage de l'information utilisant 64 caractères, choisis pour être disponibles 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
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).
base64url
Le document RFC 4648 prévoit une alternative pour un encodage compatible avec les noms de fichiers et les URI. En effet les caractères 62 (+) et 63 (/) peuvent poser problème avec certains systèmes de fichier et dans les URI. La solution retenue consiste à remplacer ces caractères respectivement par un moins (-) et un souligné (_). Le caractère de complément reste le =, mais peut être ignoré.
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 - (minus) 12 M 29 d 46 u 63 _ (underline) 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
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 ».
Exemple avec OpenSSL
Encodage d'un fichier texte en base64 :
$ openssl enc -base64 -in monfichier.txt -out monfichier.b64
Décodage d'un fichier texte en base64 :
$ openssl enc -d -base64 -in monfichier.b64 -out monfichier.txt
Liens externes
- (en) Codes source en C, en Java, en Javascript, en C#, en Perl
- (en) Interface graphique pour Windows
Ressources
- (en) Encodeur/Decodeur en ligne Base64, Hexadécimal, Binaire ... (script serveur qui peut mémoriser vos entrées)
- (hu), (en) Encodeur/Decodeur en ligne Base64 (script serveur qui peut mémoriser vos entrées)
- Portail de l’informatique
Catégorie : Codage des données
Wikimedia Foundation. 2010.