Qu'est-ce qu'un décodeur Base64 ?
Le Base64 est un système d'encodage qui représente des données binaires à l'aide de 64 caractères ASCII imprimables (A–Z, a–z, 0–9, ainsi que + et /). On l'utilise couramment pour intégrer des images directement dans du HTML, transmettre des données au format JSON ou dans des URL, et encoder les pièces jointes des e-mails. Ce décodeur effectue l'opération inverse : il transforme une chaîne Base64 en le texte d'origine qu'elle représentait.
Comment l'utiliser
Collez ou saisissez votre chaîne Base64 dans le champ de saisie, puis validez. L'outil supprime les espaces, décode les caractères et affiche le texte obtenu, accompagné du nombre d'octets décodés, du nombre de caractères en entrée et du nombre de caractères de remplissage (« = ») détectés. Si votre saisie contient des caractères qui ne font pas partie de l'alphabet Base64, un message « invalide » s'affichera.
La formule expliquée
Chaque caractère Base64 encode 6 bits de données. Quatre caractères Base64 portent donc \(4 \times 6 = 24\) bits, qui se regroupent parfaitement en trois octets de 8 bits. Lorsque la longueur des données d'origine n'est pas un multiple de 3, un ou deux caractères de remplissage « = » sont ajoutés afin que la longueur de la chaîne encodée soit toujours un multiple de 4. Au décodage, ce remplissage est retiré et les bits excédentaires sont écartés.
$$\text{Bytes} = \left\lfloor \frac{6 \times \text{Base64 chars (no padding)}}{8} \right\rfloor$$$$\begin{gathered} \text{Bytes} = \left\lfloor \frac{6N}{8} \right\rfloor \\[1.5em] \text{where}\quad \left\{ \begin{aligned} N &= \text{valid chars of } \text{Base64 Input} \\ &\quad \text{(whitespace and } = \text{ removed)} \\ \text{char} &\to 6\text{ bits},\; 8\text{ bits} \to 1\text{ byte} \end{aligned} \right. \end{gathered}$$
Exemple concret
Prenons la chaîne Base64 SGk=. Les caractères correspondent aux valeurs \(S=18\), \(G=6\), \(k=36\), et « = » est un caractère de remplissage. En binaire : \(010010\ 000110\ 100100 \to 24\) bits, mais le remplissage final signifie que seuls 2 octets sont valides : \(01001000\ (72 = \text{« H »})\) et \(01101001\ (105 = \text{« i »})\). Le résultat est Hi.
Référence de l'alphabet Base64
Le Base64 standard (RFC 4648) fait correspondre chaque valeur 6 bits (0–63) à l'un des 64 caractères ASCII imprimables. Un décodeur lit chaque caractère, recherche son index 6 bits dans ce tableau, concatène les bits et les regroupe en octets 8 bits. Le tableau ci-dessous énumère l'alphabet complet et l'index assigné à chaque caractère.
| Index | Caractère | Index | Caractère | Index | Caractère | Index | Caractère |
|---|---|---|---|---|---|---|---|
| 0 | A | 16 | Q | 32 | g | 48 | w |
| 1 | B | 17 | R | 33 | h | 49 | x |
| 2 | C | 18 | S | 34 | i | 50 | y |
| 3 | D | 19 | T | 35 | j | 51 | z |
| 4 | E | 20 | U | 36 | k | 52 | 0 |
| 5 | F | 21 | V | 37 | l | 53 | 1 |
| 6 | G | 22 | W | 38 | m | 54 | 2 |
| 7 | H | 23 | X | 39 | n | 55 | 3 |
| 8 | I | 24 | Y | 40 | o | 56 | 4 |
| 9 | J | 25 | Z | 41 | p | 57 | 5 |
| 10 | K | 26 | a | 42 | q | 58 | 6 |
| 11 | L | 27 | b | 43 | r | 59 | 7 |
| 12 | M | 28 | c | 44 | s | 60 | 8 |
| 13 | N | 29 | d | 45 | t | 61 | 9 |
| 14 | O | 30 | e | 46 | u | 62 | + |
| 15 | P | 31 | f | 47 | v | 63 | / |
Le 65e symbole, = (égal), n'est pas un caractère de données. C'est le marqueur de remplissage utilisé à la fin d'une chaîne codée pour que la longueur totale soit toujours un multiple de 4 caractères. Un = signifie que le groupe final de 4 caractères code 2 octets; deux == signifie qu'il code 1 octet. Un décodeur rejette le remplissage et les bits zéro supplémentaires qu'il implique.
Autres exemples de décodage
Chaque caractère Base64 contribue 6 bits. Quatre caractères (24 bits) se décodent exactement en 3 octets; les groupes partiels utilisent le remplissage pour que le décodeur sache combien d'octets conserver. Le nombre d'octets suit \(\text{Octets} = \left\lfloor \frac{6 \times n}{8} \right\rfloor\), où \(n\) est le nombre de caractères réels (non-remplissage).
Exemple 1 – Pas de remplissage : « TWFu » → « Man »
- Index : T=19, W=22, F=5, u=46.
- Groupes 6 bits :
010011 010110 000101 101110. - Regroupement en octets :
01001101 01100001 01101110= 77, 97, 110. - ASCII 77, 97, 110 = M, a, n. Avec \(n=4\) : \(\lfloor 24/8 \rfloor = 3\) octets — Man.
Exemple 2 – Un remplissage « = » : « SGVsbG8= » → « Hello »
- Abandon du remplissage : 7 caractères réels S,G,V,s,b,G,8.
- Index : S=18, G=6, V=21, s=44, b=27, G=6, 8=60.
- Bits :
010010 000110 010101 101100 011011 000110 111100(les 2 bits finaux du groupe de remplissage sont des zéros de remplissage et sont rejetés). - Octets :
01001000 01100101 01101100 01101100 01101111= 72, 101, 108, 108, 111 = H, e, l, l, o. - Avec \(n=7\) : \(\lfloor 42/8 \rfloor = 5\) octets — Hello.
Exemple 3 – Deux remplissages « == » : « aGk=»... et « TQ== » → « M »
- Abandon du remplissage : 2 caractères réels T, Q.
- Index : T=19, Q=16.
- Bits :
010011 010000; conserver seulement les 8 premiers bits, les 4 restants sont des zéros de remplissage. - Octet :
01001101= 77 = M. - Avec \(n=2\) : \(\lfloor 12/8 \rfloor = 1\) octet — M.
Pour aller dans l'autre direction et produire ces chaînes à partir de texte, utilisez l'Encodeur Base64.
Termes clés
- Alphabet Base64
- L'ensemble fixe de 64 caractères imprimables (A–Z, a–z, 0–9, + et /) utilisés pour représenter les données binaires sous forme de texte. Chaque caractère représente une valeur 6 bits de 0 à 63.
- Remplissage (« = »)
- Le signe égal ajouté à la fin d'une chaîne codée pour que sa longueur soit un multiple de 4 caractères. Il n'a pas de données; un « = » marque un groupe final de 2 octets et « == » marque un groupe final de 1 octet.
- Sextet (6 bits)
- Un groupe de 6 bits – l'unité qu'un seul caractère Base64 code. Quatre sextets (24 bits) s'alignent exactement avec trois octets.
- Octet / octet (8 bits)
- Une unité 8 bits, la taille standard d'un octet de données décodées. Le décodage Base64 regroupe les sextets en octets, que le convertisseur Binaire en Texte peut aussi illustrer bit par bit.
- Suppression des espaces blancs
- Suppression des espaces, tabulations et sauts de ligne avant décodage. De nombreux systèmes insèrent des sauts de ligne dans les Base64 longs (par exemple, certificats PEM, MIME électronique); un décodeur robuste ignore cet espace blanc plutôt que de le traiter comme des données.
- Base64 sûr pour les URL
- Une variante (RFC 4648 §5) qui remplace + par - et / par _ pour que la chaîne soit sûre dans les URL et les noms de fichiers. Le remplissage est souvent omis également. Reconvertissez ces caractères en + et / avant d'utiliser un décodeur standard; pour l'URL elle-même, voir le Calculateur Code/Décode d'URL.
FAQ
Mes données sont-elles envoyées quelque part ? La logique de décodage s'exécute côté serveur pour afficher le résultat, mais aucune saisie n'est conservée. Évitez toutefois de coller des informations sensibles.
Pourquoi le nombre d'octets n'est-il pas divisible par 4 ? Le nombre d'octets correspond aux octets de sortie décodés, et non aux caractères d'entrée. Chaque groupe de 4 caractères en entrée produit jusqu'à 3 octets en sortie.
Que signifie le remplissage (padding) ? Un seul « = » indique que le dernier groupe a produit 2 octets ; deux « = » signifient qu'il en a produit 1. L'absence de remplissage indique que la longueur des données était déjà un multiple de 3.