Decodex

DECODEX · BASE64 · UTF-8

Remplissage Base64 : pourquoi = ou == ?

Comprendre le remplissage Base64, les longueurs invalides et les différences entre Zg, Zg= et Zg==.

Base64 transforme des groupes de trois octets en quatre caractères. Le signe = complète le dernier groupe lorsque sa taille est insuffisante. Il indique un remplissage et ne représente pas une lettre du texte initial.

Compter les octets

Un octet restant exige == ; deux exigent = ; trois n’en exigent aucun. f donne Zg==, fo donne Zm8= et foo donne Zm9v. Comptez les octets UTF-8, car une lettre accentuée ou un emoji peut occuper plusieurs octets.

Restaurer un remplissage absent

Après suppression des espaces, une longueur modulo 4 de 2 peut recevoir == et une longueur modulo 4 de 3 peut recevoir =. Un reste de 1 signale une longueur impossible : ajouter des = ne suffit pas. Vérifiez aussi l’alphabet et le protocole utilisé.

Distinguer absence et erreur

Decodex accepte Zg et Zg==, mais refuse Zg= car le remplissage présent est incomplet. Il refuse également A=AA et Zg===. Ne supprimez pas arbitrairement les caractères pour masquer une corruption. Certains protocoles imposent un remplissage exact, d’autres l’omettent.

Essayer cet exemple

TexteUTF-8 bytesBase64Remplissage
f1Zg====
fo2Zm8==
foo3Zm9v—

Essayer cet exemple →

Base64 → UTF-8 · UTF-8 → Base64

Questions fréquentes

Une chaîne sans = est-elle toujours incorrecte ?

Non. Les données dont la taille est un multiple de trois octets n’exigent pas de remplissage. Certains protocoles le suppriment également.

Références

Autres guides Base64