Guides Données et encodage

Comment fonctionnent Base64 et l'encodage

Ce qu'est (et n'est pas) l'encodage, comment Base64 transforme trois octets en quatre caractères, pourquoi il ajoute un tiers et les erreurs à éviter.

Dernière vérification:

AdSense Placeholder
Slot: header_reference_page
Sur cette page

Encoder, c'est convertir des données d'une représentation à une autre pour qu'elles puissent circuler ou être stockées là où un format précis est attendu. Ce n'est pas du chiffrement : il n'y a pas de clé, n'importe qui peut l'inverser et rien n'est caché. Base64 en est l'exemple le plus courant : il écrit n'importe quels octets avec seulement 64 caractères imprimables sûrs, ce qui permet à des données binaires de traverser des systèmes conçus pour du texte.

Pourquoi Base64 existe

De nombreux protocoles anciens ont été conçus pour du texte brut. Les corps d'e-mail, les chaînes JSON, les URL et les attributs HTML peuvent casser ou corrompre des octets quelconques : un octet nul isolé, un saut de ligne mal placé ou un caractère qui a un sens spécial. Base64 évite le problème en n'utilisant que A-Z, a-z, 0-9, + et / (plus = pour le remplissage). Vous le croiserez dans les pièces jointes d'e-mail, les URL data:, les JSON Web Tokens et les clés des fichiers de certificats.

Comment ça marche

Base64 lit l'entrée trois octets (24 bits) à la fois et redécoupe ces 24 bits en quatre groupes de 6 bits. Chaque groupe de 6 bits est un nombre de 0 à 63, et chaque nombre choisit un caractère de l'alphabet (A vaut 0, Z vaut 25, a vaut 26, z vaut 51, 0 vaut 52, 9 vaut 61, + vaut 62, / vaut 63).

Prenons les trois lettres Man :

Caractère M a n
Valeur de l'octet 77 97 110
8 bits 01001101 01100001 01101110

Mises bout à bout, cela donne 010011010110000101101110, qui se découpe en quatre groupes de 6 bits :

Groupe de 6 bits Indice Caractère
010011 19 T
010110 22 W
000101 5 F
101110 46 u

Man devient donc TWFu. Vous pouvez le vérifier avec Encodeur Base64.

Remplissage et taille

Trois octets en entrée donnent toujours quatre caractères : la sortie est donc environ un tiers plus grande que l'entrée. Quand la longueur de l'entrée n'est pas un multiple de trois, le dernier groupe est complété par des signes = pour que la sortie reste un multiple de quatre.

Entrée Base64 Octets d'entrée Caractères de sortie
Hi SGk= 2 4
Hello SGVsbG8= 5 8
Hello, world! SGVsbG8sIHdvcmxkIQ== 13 20
a YQ== 1 4
ab YWI= 2 4
abc YWJj 3 4

Un octet restant donne deux caractères et == ; deux octets restants donnent trois caractères et =.

Variantes

  • Base64 sûr pour les URL remplace + par - et / par _ (et supprime souvent le =), car +, / et = ont un sens particulier dans les URL. Les octets fb ff fe donnent +//+ en Base64 standard et -__- en version sûre pour les URL. Les JSON Web Tokens utilisent cette variante.
  • Base64 MIME (e-mail) insère un saut de ligne tous les 76 caractères.
  • Base32 et Base16 (hexadécimal) fonctionnent de la même façon avec des alphabets plus petits : ils sont plus longs, mais plus pratiques pour les systèmes insensibles à la casse et pour saisir des codes à la main.

Erreurs courantes

  • Prendre Base64 pour de la sécurité. Un mot de passe ou un secret simplement en Base64 est à la vue de tous. N'importe qui peut le coller dans Décodeur Base64. Utilisez un vrai chiffrement ou un hachage pour les secrets.
  • Encoder du texte sans choisir de jeu de caractères. Base64 encode des octets, pas des lettres. Pour du texte, il importe que ces octets soient de l'UTF-8 ou autre chose, et une discordance transforme é en charabia à l'arrivée.
  • Encoder deux fois. Encoder des données déjà encodées les gonfle d'un tiers supplémentaire et donne un texte illisible une fois décodé. Si les données décodées ressemblent encore à du Base64, elles ont été encodées deux fois.
  • Oublier la variante. Le Base64 standard et celui sûr pour les URL ne sont pas interchangeables : une chaîne contenant - ou _ échoue dans un décodeur standard strict.
  • Le casser avec des sauts de ligne ou des espaces. Certains décodeurs rejettent les sauts de ligne intégrés ; d'autres les ignorent.

Où l'essayer

Encodez avec Encodeur Base64 et décodez avec Décodeur Base64 ; les deux s'exécutent entièrement dans votre navigateur. Pour les octets sous le texte, voyez ASCII et UTF-8.

Essayez ces outils

Voir aussi

  • Glossaire ASCII
    L'ASCII est un encodage de caractères sur 7 bits qui attribue les nombres 0 à 127 aux lettres anglaises, chiffres.
  • Glossaire UTF-8
    L'UTF-8 est l'encodage Unicode dominant : il écrit chaque caractère sur un à quatre octets et reste identique à l'ASCII pour les 128.

Questions fréquemment posées

Non. Base64 est un encodage réversible sans clé. N'importe qui peut le décoder instantanément : il ne doit jamais servir à protéger un mot de passe ou un secret.

Chaque groupe de 3 octets (24 bits) devient 4 caractères qui ne portent chacun que 6 bits. Quatre caractères pour trois octets, c'est un rapport de 4 à 3, soit environ 33 % de plus, plus le remplissage.

AdSense Placeholder
Slot: footer_leaderboard