Comment utiliser l'encodeur et décodeur Base64
- Choisissez Encoder pour convertir du texte en Base64, ou Décoder pour reconvertir du Base64 en texte.
- 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.
- Activez l'option Compatible URL si le résultat doit aller dans une URL, un nom de fichier ou un JWT.
- 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 :
| Étape | Valeur |
|---|---|
| Octets | M=77, a=97, n=110 |
| 24 bits | 01001101 01100001 01101110 |
| Groupes de 6 bits | 010011 010110 000101 101110 = 19, 22, 5, 46 |
| Base64 | TWFu |
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:passwordencodé en Base64.user:passdevientAuthorization: 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.
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