4. Encodage Base 64
La description suivante de Base 64 provient de [3], [4], [5] et [6]. Cet encodage peut être appelé « base64 ».
L'encodage Base 64 est conçu pour représenter une séquence arbitraire d'octets sous une forme permettant d'utiliser à la fois les lettres minuscules et majuscules, sans être nécessairement lisible par un humain.
L'utilisation d'un sous-ensemble de 65 caractères US-ASCII permet à chaque caractère imprimable de représenter 6 bits. (Le 65e caractère « = » est utilisé pour représenter une fonction de traitement spéciale.)
Le processus d'encodage représente des groupes de 24 bits d'entrée sous la forme d'une chaîne de sortie de 4 caractères encodés. De gauche à droite, trois groupes d'entrée de 8 bits sont concaténés pour former un groupe d'entrée de 24 bits. Ce groupe de 24 bits est ensuite traité comme quatre groupes concaténés de 6 bits, chacun étant converti en un caractère de l'alphabet Base 64.
Chaque groupe de 6 bits est utilisé comme index dans un tableau de 64 caractères imprimables. Le caractère référencé par cet index est placé dans la chaîne de sortie.
Tableau 1 : Alphabet Base 64
Valeur Encodage Valeur Encodage Valeur Encodage Valeur Encodage
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 (remplissage) =
15 P 32 g 49 x
16 Q 33 h 50 y
Lorsque la fin des données encodées compte moins de 24 bits, un traitement spécial est effectué. Un quantum d'encodage complet est toujours achevé à la fin d'un bloc de données. Lorsque le groupe d'entrée dispose de moins de 24 bits, des bits de valeur zéro sont ajoutés à droite pour former un nombre entier de groupes de 6 bits. Le remplissage en fin de données est effectué avec le caractère « = ». Comme toute entrée Base 64 est un nombre entier d'octets, seuls les cas suivants se produisent :
(1) Le quantum final de l'entrée encodée est un multiple de 24 bits ; la dernière unité de sortie encodée est un multiple de 4 caractères, sans remplissage « = ».
(2) Le quantum final de l'entrée encodée est exactement de 8 bits ; la dernière unité de sortie encodée est de deux caractères suivis de deux caractères de remplissage « = ».
(3) Le quantum final de l'entrée encodée est exactement de 16 bits ; la dernière unité de sortie encodée est de trois caractères suivis d'un caractère de remplissage « = ».