Accueil
  • #développement
  • #Base64
  • #outils

Base64 n’est pas du chiffrement : comment ça marche

Par · · 4 min de lecture

Une image collée dans du CSS sous forme de data:image/png;base64,…, un en-tête Authorization: Basic …, un jeton JWT : le Base64 est partout, et on le prend souvent pour une manière de « cacher » des données. Ce n’est pas le cas. Voici comment il fonctionne vraiment, pourquoi il alourdit les données d’un tiers, et pourquoi il ne protège rien.

Vous verrez aussi comment encoder et décoder du Base64 localement, sans rien installer.

Comment fonctionne l’encodage Base64#

Le Base64 transforme des octets quelconques (image, PDF, texte accentué) en texte composé de 64 caractères sûrs : A–Z, a–z, 0–9, + et /. Ils passent sans dommage dans un e-mail, un fichier JSON ou une page HTML, là où des octets bruts seraient altérés.

Le principe : on découpe les données par groupes de 3 octets (24 bits), puis chaque groupe est redécoupé en 4 blocs de 6 bits, et chaque bloc devient un caractère de l’alphabet.

Man  →  TWFu
Ma   →  TWE=
M    →  TQ==

Quand le nombre d’octets n’est pas un multiple de 3, on complète avec un ou deux signes = : c’est le remplissage (padding). Il garantit que la longueur du résultat est toujours un multiple de 4.

Pourquoi la taille augmente d’un tiers#

Trois octets deviennent quatre caractères : le texte produit pèse donc environ 33 % de plus que les données d’origine. Bonjour fait 7 octets, son Base64 Qm9uam91cg== en fait 12. Une image de 300 Ko devient une chaîne d’environ 400 Ko une fois encodée.

C’est le prix d’un format qui ne casse pas en route. Une petite icône dans une feuille de style peut se justifier ; de grosses images en Base64 alourdissent la page et ne peuvent plus être mises en cache séparément.

Attention aux accents : é occupe deux octets en UTF-8 et donne w6k=.

Base64 n’est pas du chiffrement#

Chiffrer, c’est rendre des données illisibles sans une clé. Le Base64, lui, n’a ni clé ni secret : l’algorithme est public et n’importe qui peut annuler l’opération en une seconde.

Authorization: Basic YWRtaW46bW90ZGVwYXNzZQ==

Décodez cette valeur et vous obtenez admin:motdepasse. L’en-tête Basic n’est protégé que par HTTPS, jamais par le Base64 lui-même. Même chose pour un « secret » encodé dans un fichier de configuration : il est en clair pour qui sait le lire.

  • Encoder : changer la représentation des données, sans secret (Base64, pourcentage dans les URL).
  • Chiffrer : protéger la confidentialité avec une clé (AES, par exemple).
  • Hacher : produire une empreinte à sens unique, non réversible. La différence est détaillée dans l’article sur les hash MD5, SHA-1 et SHA-256.

Base64 standard et base64url#

Les caractères + et / posent problème dans une URL ou un nom de fichier. La variante base64url les remplace par - et _, et omet souvent le = final. Le même texte donne deux écritures :

?>?>  →  Pz4/Pg==   (standard)
?>?>  →  Pz4_Pg     (base64url)

C’est cette variante que les JWT utilisent pour leurs trois segments, comme le détaille l’article sur la lecture d’un JWT. Si une chaîne vient d’une URL, un = peut y apparaître sous la forme %3D : passez d’abord par le décodeur d’URL avant de la décoder.

Encoder et décoder avec l’outil#

L’encodeur et décodeur Base64 propose trois modes :

  1. Encoder (Texte → Base64) : saisissez votre texte dans « Texte à encoder ». Cochez l’option URL-safe si le résultat doit aller dans une URL ou un jeton.
  2. Décoder (Base64 → Texte) : collez la chaîne dans « Base64 à décoder ». L’outil accepte le Base64 standard, le base64url avec ou sans =, et les URL data:. Si le contenu est une image, un aperçu s’affiche avec un bouton de téléchargement ; si ce sont des données binaires, vous pouvez télécharger le fichier.
  3. Fichier → Base64 : déposez un fichier pour obtenir son « Base64 brut » et son « URL data », avec la taille avant et après encodage.

Un message d’erreur apparaît si la chaîne contient un caractère hors alphabet. Tout est calculé dans votre navigateur : rien n’est envoyé à un serveur.

En résumé#

Le Base64 transporte des données binaires dans du texte, au prix d’environ 33 % de poids en plus. Il s’inverse sans clé : ne l’utilisez jamais pour protéger un mot de passe ou un jeton. Pour voir ce que cache une chaîne suspecte, un décodage local avec l’outil Base64 suffit.

Outils utilisés dans cet article

À lire aussi