Base64 : ce n'est pas du chiffrement

Une forme traverse un prisme et en ressort comme la même forme, seulement colorée différemment.

Imagine : quelqu'un t'envoie SGV5LCBnZWhlaW0h. Ça ressemble à un code. C'en est un — mais il n'y a pas de clé, pas de mot de passe, pas de secret. N'importe qui peut le retourner en un clic. C'est la différence entre écrire autrement et vraiment cacher, et c'est cette différence qui explique pourquoi ce chapitre vient en premier.

Les mots dont tu as besoin

Octet
Tout dans un ordinateur — une lettre, un pixel, une note dans une chanson — est finalement un nombre de 0 à 255. Ce nombre s'appelle un octet. La lettre A est l'octet 65, une espace est 32.
Encoder
Écrire la même information d'une autre manière. Comme « cinq » et « 5 » et « V » sont le même nombre. Rien ne se perd et rien n'est caché.
Base64
Une façon d'écrire des octets avec seulement des lettres, des chiffres, + et /. Chaque groupe de trois octets devient quatre caractères. Tout devient donc un tiers plus long.
Hexadécimal
Encore une façon d'écrire des octets, cette fois avec les chiffres 0–9 et les lettres a–f. Chaque octet devient deux caractères : 41 est la lettre A. Tu vas voir ça dans la démo.

Pourquoi ça existe, alors ?

Autrefois, les programmes de courrier électronique ne pouvaient envoyer que du texte ordinaire. Si tu joignais une photo, elle arrivait abîmée de l'autre côté, parce qu'elle contenait des octets que le serveur de mail ne comprenait pas. La solution : transformer ces octets en caractères que chaque programme comprend, et les reconvertir de l'autre côté. C'est le base64. Ça se retrouve encore partout aujourd'hui : dans la photo de ta carte d'identité quand elle est lue, dans les jetons qui te maintiennent connecté à un site, dans les certificats.

Essaie toi-même

Tout se passe dans ton navigateur. Rien n'est envoyé au serveur.

  1. Clique sur Vers base64. Tu vois ta phrase en octets et en base64.
  2. Colle le résultat base64 dans le champ et clique sur Retour au texte. Ta phrase revient. Sans mot de passe.
  3. Colle maintenant SGV5LCBnZWhlaW0h et clique sur Retour au texte.

Regarde la ligne Octets (hex). Ce sont les vrais nombres qui composent ta phrase. Base64 et hexadécimal sont tous les deux simplement une façon d'écrire ces nombres — comme tu peux écrire un nombre en chiffres ou en toutes lettres. Aucun des deux ne cache quoi que ce soit.

Le test que tu peux désormais toujours faire

Tu vois quelque chose d'illisible ? Pose-toi une seule question : faut-il une clé pour le retourner ? Non ? Alors c'est de l'encodage, et ce n'est pas secret, aussi bizarre que ça paraisse. Oui ? Alors seulement c'est du chiffrement. Tout ce qui suit sur ce site parle de ce « oui ».

Tu connais ces « jetons » des sites web ? Quand tu es connecté, ton navigateur garde souvent une longue suite de caractères avec deux points dedans. C'est un JWT, et les deux premières parties sont simplement du base64. Tout le monde peut lire ce qu'il y a dedans — ton nom, ton numéro d'utilisateur. Ce que personne ne peut falsifier, c'est la troisième partie : la signature. Comment ça marche, tu le verras au chapitre sept.

Voici les maths : compter dans une autre base

Toi, tu comptes en dizaines : 10 chiffres, de 0 à 9. Un ordinateur compte en base deux : 0 et 1. L'hexadécimal compte en base seize, le base64 en base soixante-quatre. C'est toujours le même nombre, écrit autrement. La question « combien de caractères faut-il pour écrire un nombre ? » est une question de logarithmes — et c'est exactement pourquoi 3 octets deviennent toujours 4 caractères base64 : 224 = 644. Vérifie le calcul.