Base64

L'idée de l'encodage en base64 c'est faire passer du binaire sous une forme textuelle. Et c'est un exemple parfait pour illustrer l'idée que lorsque les données sont bien formatées, les algorithmes tombent sous le sens.

Chaque bout de la chaine binaire est groupé par groupe de 3 octets. Prenons l'exemple de la chaine "Hello". En utilisant la table ASCII cela donne en binaire:

01001000 01100101 01101100 01101100 01101111

On groupe alors par 3 octets:

01001000 01100101 01101100
01101100 01101111

puis par 6bits:

010010 000110 010101 101100
011011 000110 1111

On veut que tout soit aligné sur les caratères du coup on rajoute des zéros:

010010 000110 010101 101100
011011 000110 111100

On convertit alors en base64:

SGVs
bG8

Sauf qu'il y a deux problèmes:

En ajoutant un "=" pour marquer l'absence du dernier octet règle ces problèmes:

On obtient alors:

SGVs
bG8=

Le même principe est appliqué lorsque le dernier groupe ne contient qu'un seul octet (Exemple avec "Hell"):

01001000 01100101 01101100 01101100

On groupe alors par 3 octets:

01001000 01100101 01101100
01101100

puis par 6bits:

010010 000110 010101 101100
011011 00

On veut que tout soit aligné sur les caratères du coup on rajoute des zéros

010010 000110 010101 101100
011011 000000

On convertit alors en base64:

SGVs
bA

On ajoute les "=":

SGVs
bA==