Encoding: base16, base32 et base64

Dans cet article nous verrons quels sont les différents types d'encodage de la famille des bases.

I/ Base16

L'encoding base16 repose sur le système hexadécimal pour encoder un texte. Par exemple le texte suivant:

Salut les gens

Sera encodé de cette manière:

53616c7574206c65732067656e73

Pour encoder une chaîne de caractères ou un fichier on pourra utiliser l'utilitaire xxd de cette manière:

echo -ne "Salut les gens" | xxd -p

Pour repérer l'utilisation de cet encodage il suffira d'analyser le contenu de l'encodé. S'il est encodé en base16 alors vous ne trouverez que des chiffres et les caractères abcdef.

II/ Base32

L'encodage en base32 repose sur les caractères alphanumérique suivants: abcdefghijklmnopqrstuvwxyz et 1234567890. Sa particularité c'est que les caractères encodés seront toujours en majuscule. Ainsi le message:

Salut les gens

Sera encodé ainsi:

KNQWY5LUEBWGK4ZAM5SW44Y=

La particularité du base32 c'est qu'il doit respecter un certain padding. Le message doit forcément être un multiple de 4. Si ce n'est pas le cas alors il faudra padder avec des "=". Pour encoder un message en base32 on pourra utiliser le binaire base32:

echo -ne "Salut les gens" | base32

III/ Base64

L'encodage en base64 repose sur le même alphabet que l'encodage en base32 à la seule différence que les caractères pourront à la fois être en minuscule ou en majuscule. Ainsi le texte:

Salut les gens

Sera encodé ainsi:

U2FsdXQgbGVzIGdlbnM=

Encore une fois on retrouve le caractère "=" utilisé comme padding.