Encodage et décodage Base64

RSS

Encodez du texte en Base64 ou décodez du Base64 en texte, avec une prise en charge complète de l'UTF-8 et une option compatible URL.

Fonctionne à 100 % dans votre navigateur. Rien de ce que vous collez n'est envoyé ni stocké.
Texte ou Base64
Résultat
Prêt.

Comment utiliser l'encodeur et décodeur Base64

  1. Choisissez Encoder pour convertir du texte en Base64, ou Décoder pour reconvertir du Base64 en texte.
  2. Collez votre entrée. Le texte est traité en UTF-8 : les lettres accentuées, les écritures non latines et les emoji fonctionnent donc correctement.
  3. Activez l'option Compatible URL si le résultat doit aller dans une URL, un nom de fichier ou un JWT.
  4. Copiez la sortie.

L'encodage et le décodage se font localement dans votre navigateur ; rien de ce que vous collez n'est envoyé ni enregistré.

Comment fonctionne le Base64

Le Base64, défini dans la RFC 4648, représente des données binaires quelconques à l'aide de 64 caractères ASCII imprimables : A–Z, a–z, 0–9, + et /. Il existe pour que du contenu binaire puisse transiter sans risque par des systèmes conçus pour le texte, comme l'e-mail, le JSON, le XML et les en-têtes HTTP.

L'algorithme traite l'entrée 3 octets (24 bits) à la fois et les découpe en quatre groupes de 6 bits. Chaque valeur de 6 bits (0–63) sélectionne un caractère de l'alphabet. Le mot Man illustre le processus :

ÉtapeValeur
OctetsM=77, a=97, n=110
24 bits01001101 01100001 01101110
Groupes de 6 bits010011 010110 000101 101110 = 19, 22, 5, 46
Base64TWFu

Comme chaque groupe de 3 octets devient 4 caractères, la sortie Base64 est environ 33 % plus volumineuse que l'entrée (plus les sauts de ligne, si un format comme MIME en insère).

Le remplissage avec =

Lorsque la longueur de l'entrée n'est pas un multiple de trois, le dernier groupe est complété (padding). Un octet restant produit deux caractères suivis de == ; deux octets restants produisent trois caractères suivis de =. Par exemple, Hi s'encode en SGk=.

Le Base64 compatible URL

Les caractères standard + et / ont une signification particulière dans les URL et les chemins de fichiers. Le §5 de la RFC 4648 définit l'alphabet base64url, qui les remplace par - et _. Le remplissage est souvent omis. Les JSON Web Tokens utilisent le base64url sans remplissage.

Standard:  +/8=
URL-safe:  -_8

Pièges courants

Le Base64 n'est pas un chiffrement

N'importe qui peut décoder du Base64 instantanément ; il n'y a pas de clé. Ne l'utilisez jamais pour « cacher » des mots de passe ou des clés d'API. Pour vérifier l'intégrité, utilisez un hash du générateur de hash, et pour la confidentialité, un véritable chiffrement.

L'UTF-8 en JavaScript

La fonction intégrée btoa() du navigateur n'accepte que les caractères de la plage Latin-1 et génère une erreur pour tout autre caractère. Convertissez d'abord le texte en octets UTF-8 :

btoa("✓");   // InvalidCharacterError

const bytes = new TextEncoder().encode("✓");
btoa(String.fromCharCode(...bytes));   // "4pyT"

Mélanger les alphabets

Décoder des données base64url avec un décodeur standard strict échoue sur - et _, ou en l'absence de remplissage. Convertissez l'alphabet et rétablissez le remplissage jusqu'à un multiple de quatre caractères avant de décoder.

Où rencontre-t-on le Base64 ?

  • Les URI data intègrent de petits fichiers directement dans du HTML ou du CSS : data:image/png;base64,iVBORw0KGgo...
  • L'authentification HTTP Basic envoie username:password encodé en Base64. user:pass devient Authorization: Basic dXNlcjpwYXNz, ce qui se décode très facilement : l'authentification Basic ne doit donc être utilisée qu'en HTTPS. Vous pouvez inspecter ces en-têtes avec le vérificateur d'en-têtes HTTP.
  • Les pièces jointes d'e-mail (MIME) ainsi que les certificats et clés PEM.
  • Les JWT, dont l'en-tête et la charge utile sont du JSON encodé en base64url. Utilisez le décodeur JWT pour les lire.
Astuce : en ligne de commande, printf 'text' | base64 encode et base64 -d décode (les anciennes versions de macOS utilisent -D). Utilisez printf ou echo -n pour qu'un saut de ligne final ne soit pas encodé lui aussi.

Questions fréquentes

Pourquoi ma chaîne Base64 se termine-t-elle par = ou == ?

C'est le remplissage (padding). Il indique au décodeur combien d'octets contenait le dernier groupe lorsque la longueur de l'entrée n'était pas divisible par trois.

Le Base64 est-il sécurisé ?

Non. C'est un encodage, pas un chiffrement. Il n'offre aucune confidentialité ; il permet seulement de transporter des données binaires sans risque sous forme de texte.

Pourquoi la sortie encodée est-elle plus grande que l'entrée ?

Chaque caractère Base64 porte 6 bits au lieu de 8 : 3 octets en entrée nécessitent donc 4 caractères en sortie, soit un surcoût d'environ un tiers.

Quelle est la différence entre Base64 et base64url ?

Seuls deux caractères diffèrent : base64url utilise - et _ au lieu de + et /, et supprime généralement le remplissage =, ce qui permet de placer le résultat dans des URL sans autre échappement.

Mis à jour

Copié dans le presse-papiers