Anonymous View

Base64 Décodeur

/

Vos données restent 100 % privées -- Base64 est entièrement encodé et décodé directement sur votre appareil.

Texte brut
Base64

Qu'est-ce que Base64 ?#

Base64 est une façon de représenter des données binaires sous forme de texte brut en utilisant 64 caractères ASCII : A–Z, a–z, 0–9, plus + et /. Il permet à des données binaires comme les images, les clés et les pièces jointes d'e-mail de voyager en toute sécurité à travers des systèmes conçus pour le texte. Il s'agit d'encodage, pas de chiffrement.

Base64 utilise un alphabet fixe de 64 caractères. Chaque valeur de 0 à 63 correspond exactement à l'un d'eux, c'est ainsi que 3 octets quelconques de données binaires deviennent 4 caractères lisibles :

ValeursCaractères
0–25A–Z26 lettres majuscules
26–51a–z26 lettres minuscules
52–610–910 chiffres
62–63+ /2 symboles

Le signe "=" est la seule exception. Il s'agit d'un rembourrage, pas l'une des 64 valeurs, et il ne fait qu'arrondir le dernier bloc.

Vous l'avez presque certainement déjà vu. Base64 apparaît partout où des données binaires doivent circuler à l'intérieur du texte :

  • Intégrer une petite image ou icône directement dans HTML ou CSS
  • Retourner des blobs binaires dans une réponse d'API JSON
  • Encoder des pièces jointes d'e-mail (MIME)
  • Stocker des clés et des certificats dans des fichiers PEM

Cette astuce d'URI de données ressemble à ceci. La longue chaîne est l'image entière :

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

Pourquoi Base64 existe-t-il ?#

Les premiers protocoles réseau étaient conçus pour le texte, pas pour les octets bruts. ASCII utilisait 7 bits et 128 caractères, ce qui convenait pour l'anglais mais pas pour les données binaires. Certains systèmes altéraient les caractères de contrôle ou réécrivaient les fins de ligne (LF en CR + LF), corrompant silencieusement les images et l'audio en transit.

Base64 contourne tout cela en n'émettant que des caractères sur lesquels tous les systèmes s'accordent déjà. Base16 et Base32 font le même travail avec des alphabets plus petits, mais Base64 compresse davantage de données par caractère tout en restant sûr. C'est pourquoi il a gagné.

Comment fonctionne l'encodage Base64#

Tout le schéma repose sur une seule idée répétée : prendre 3 octets (24 bits), les redécouper en quatre groupes de 6 bits, et rechercher chaque groupe dans l'alphabet. Voici le mot "Logto", encodé à la main.

  1. Écrire chaque caractère en binaire 8 bits, en utilisant son code ASCII.
  2. Prendre 3 octets à la fois. Soit 24 bits.
  3. Redécouper ces mêmes 24 bits en quatre groupes de 6 bits.
  4. Lire chaque groupe de 6 bits comme un nombre de 0 à 63.
  5. Rechercher ce nombre dans l'alphabet pour obtenir un caractère.
  6. Si le dernier bloc d'octets n'atteint pas 3, compléter les bits restants avec des zéros et ajouter "=" pour que chaque bloc reste à 4 caractères.

Étape 1. Convertir chaque caractère en binaire 8 bits :

CaractèreCode ASCIIBinaire
L7601001100
o11101101111
g10301100111
t11601110100
o11101101111

Étape 2. Prendre les trois premiers octets, "Log", et redécouper ces mêmes 24 bits en quatre groupes de 6 bits :

Octets de 8 bits
01001100 01101111 01100111
Groupes de 6 bits
010011 000110 111101 100111

Étape 3. Lire chaque groupe de 6 bits comme un nombre, puis rechercher ce nombre dans l'alphabet :

Groupe de 6 bitsValeurCaractère Base64
01001119T
0001106G
111101619
10011139n

"Logto" fait 5 octets, pas un multiple de 3. Les deux derniers octets, "to", laissent un découpage 6 + 6 + 4. Compléter ces 4 derniers bits avec des zéros pour remplir un groupe de 6 bits, puis ajouter un "=" pour compléter le bloc de 4 caractères :

Assembler les blocs :

"Logto"  →  TG9ndG8=

Chaque langage l'intègre nativement. En Node.js :

const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=

Trois règles découlent de ce processus, qui méritent d'être gardées en tête :

  • 3 en entrée, 4 en sortie: La longueur de sortie est l'entrée arrondie au multiple de 4 caractères supérieur, donc les données encodées sont toujours environ 33 % plus grandes.
  • "=" signifie rembourrage: Il n'apparaît que lorsque l'entrée n'est pas un multiple de 3 octets.
  • Le rembourrage compte les restes: Pas de "=" signifie un multiple de 3 octets, un "=" signifie 2 octets restants, deux "=" signifient 1 octet restant.

Quand devriez-vous utiliser Base64 ?#

Recourez à Base64 lorsque des données binaires doivent passer par un canal uniquement textuel :

  • Ressources intégrées: Intégrer une petite image ou police dans HTML/CSS pour économiser une requête.
  • Transports uniquement textuels: Placer des données binaires dans JSON, XML ou un paramètre de requête URL.
  • Caractères restreints: Déplacer des données à travers des systèmes qui bloquent sur les octets de contrôle.

Ce que vous obtenez en retour :

  • Ça fonctionne partout: Tout système capable de gérer ASCII peut le lire, sans négociation de jeu de caractères.
  • Rien n'est corrompu: La sortie survit aux canaux qui endommageraient autrement les octets bruts.

Base64 sécurisé pour les URL (Base64URL)#

Le Base64 standard s'appuie sur trois caractères qui entrent en conflit avec le fonctionnement des URL, des chaînes de requête et des noms de fichiers : +, / et le rembourrage =. Insérez une chaîne Base64 normale dans un lien et elle peut se casser de manière silencieuse :

  • + se transforme en espace. Dans une chaîne de requête, de nombreux serveurs lisent + comme un espace. Donc ?data=ab+cd arrive silencieusement comme "ab cd", et les octets sont incorrects.
  • / est un séparateur de chemin. Un / à l'intérieur d'une valeur peut être interprété comme un nouveau segment de chemin, et la plupart des systèmes de fichiers le rejettent purement et simplement dans un nom de fichier.
  • = est également réservé. Il sépare les clés des valeurs dans une chaîne de requête, donc le rembourrage = final peut être supprimé ou mal interprété.

Vous pouvez les encoder en pourcentage (+ devient %2B, / devient %2F, = devient %3D), mais cela alourdit la chaîne et il est facile de double-encoder par erreur.

Base64URL (RFC 4648 §5) règle cela à la source : remplacer + par -, remplacer / par _, et supprimer le rembourrage =. Le résultat s'insère directement dans une URL, un paramètre de requête ou un nom de fichier sans rien à échapper. Vous le verrez dans les URL, les noms de fichiers et de nombreuses API web.

const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8

Limitations (et un grand malentendu)#

Base64 est une représentation, pas un repas gratuit. Gardez trois choses en tête :

  • C'est ~33 % plus grand: 3 octets deviennent 4 caractères, donc les données encodées gonflent d'environ un tiers.
  • Ça coûte du CPU: L'encodage et le décodage ne sont pas gratuits à grand volume ou sur de grandes charges utiles.
  • C'est illisible: Les chaînes opaques rendent les journaux et le débogage plus difficiles.
Base64 n'est pas du chiffrement. C'est l'erreur que les gens commettent le plus souvent. Base64 ne cache rien. N'importe qui peut le décoder en une ligne. Si les données sont sensibles, chiffrez-les. Base64 ne change que la forme, jamais qui peut les lire.

Questions fréquemment posées#

Base64 est-il un chiffrement ou est-il sécurisé ?

Non. Il s'agit d'un encodage réversible avec un alphabet public, donc n'importe qui peut le décoder instantanément et il n'ajoute aucune confidentialité. Chiffrez les données sensibles à la place.

Pourquoi ma chaîne Base64 est-elle environ 33 % plus grande ?

Base64 transforme chaque 3 octets en 4 caractères, donc la forme encodée est toujours environ un tiers plus grande que les octets d'origine.

Que signifient les signes "=" à la fin ?

Ce sont des rembourrages qui maintiennent la sortie à un multiple de 4 caractères. Un "=" signifie que l'entrée avait 2 octets restants ; deux "=" signifient qu'il en avait 1 ; pas de "=" signifie que la longueur était déjà un multiple de 3 octets.

Quelle est la différence entre Base64 et Base64URL ?

Base64URL est le même encodage avec un alphabet sûr pour les URL et les noms de fichiers : - et _ remplacent + et /, et le rembourrage = est généralement supprimé. Il est courant dans les URL, les noms de fichiers et de nombreuses API web.

Base64 peut-il encoder n'importe quel fichier, ou seulement du texte ?

N'importe quoi en binaire : images, PDF, clés, exécutables. Base64 fonctionne sur des octets bruts, donc le type de contenu d'origine n'a pas d'importance.

Cet outil envoie-t-il mes données quelque part ?

Non. L'encodage et le décodage s'exécutent entièrement dans votre navigateur. Rien de ce que vous collez n'est téléchargé ni enregistré.

Débloquez plus avec Logto Cloud