Base64

De knowledge
Aller à la navigation Aller à la recherche

Beaucoup de mécanisme de communications autorisent les échanges de caractères mais pas de données binaires. Une liaison série 1E71 (1 bit de start, 7 bits, parité paire et 1 bit de stop) le permet, par exemple, que du transfert de caractères ASCII de base.

Si on désire transférer un fichier binaire (une clé de chiffrage, image bitmap, un fichier exécutable...) on ne peut pas le transférer octets par octets car on va perdre l'octet de poids fort.

On utilise alors une méthode qui permet de coder des données 8bit pour qu'elles passent sur une liaison textuelle. On ne peut pas utiliser tout le spectre ASCII car certains codes sont "non imprimables". Se sont, en particulier, les caractère dont le code est < 32.

On se limite donc a un "alphabet" de 64 caractères soit:

HEXA:   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 
BASE64:  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  a  b  c  d  e  f
HEXA:   20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 
BASE64:  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  0  1  2  3  4  5  6  7  8  9  +  /

Tous ces caractères sont imprimables sans aucune ambiguité.

64 caractères encodent 6 bits et on cherche à encoder des symboles de 8 bits. Le PPCM de 6 et 8 est 24.

On va donc coder 3 octets de 8 bits en 4 symboles sur 6 bits.