Web et encodage · 5 minutes de lecture
Base64 décoder et encoder : pour le transport, pas pour la
Base64 existe pour déplacer des données binaires via des canaux qui n'acceptent que du texte. Il mappe tous les trois octets en quatre caractères imprimables, c'est pourquoi la sortie codée est environ un tiers plus grande que l'entrée et pourquoi un décodage base64 est entièrement réversible – sans clé, car base64 est un codage et non un cryptage. N’importe qui peut décoder tout ce que vous codez, et tout outil suggérant le contraire vous ment.
Mis à jour
L'alphabet et le rembourrage
L'alphabet standard est `A–Z`, `a–z`, `0–9`, `+` et `/`, avec `=` complétant le groupe final lorsque la longueur d'entrée n'est pas un multiple de trois. Ce remplissage n'est pas décoratif : il indique au décodeur combien d'octets contient le dernier groupe. Le supprimer est courant dans les URL et fonctionne car les décodeurs déduisent la longueur, mais des implémentations strictes rejetteront la forme non complétée.
"YamlBox" → WWFtbEJveA==
"YamlBo" → WWFtbEJv
base64url : la variante qui finit en tokens
Les URL traitent `+`, `/` et `=` comme significatifs, donc la variante base64url les remplace par `-` et `_` et omet souvent entièrement le remplissage. Chaque jeton Web JSON utilise cet alphabet, c'est pourquoi une charge utile JWT collée dans un décodeur Base64 strict peut échouer sur des caractères qui semblent parfaitement ordinaires. Si une chaîne décode en quelque chose de presque mais pas tout à fait lisible, vous êtes généralement à un échange d'alphabet de la réponse.
Où vous le rencontrez dans la pratique
- URI de données — intégrant de petites images et polices directement dans CSS ou HTML sous la forme `data:image/png;base64,…`.
- JSON Web Tokens — chacun des trois segments est codé en base64url.
- Authentification HTTP Basic — `Authorization: Basic` transporte la base64 de `user:password`, c'est pourquoi elle doit toujours voyager via TLS.
- Pièces jointes aux e-mails — MIME utilise base64 pour les parties binaires depuis les années 1980.
- API qui ne peuvent pas accepter les charges utiles binaires : images et clés placées dans des champs de texte uniquement.
Pourquoi le résultat du décodage Base64 ressemble à une poubelle
L'échec classique est Unicode. Les anciens `btoa` et `atob` de JavaScript fonctionnent sur un octet par caractère, donc une chaîne contenant `é`, `₹` ou n'importe quel emoji lance ou produit du mojibake. La solution consiste à encoder d'abord les octets UTF-8 — `TextEncoder` dans le navigateur, `Buffer.from(str, "utf8")` dans Node — puis en base64. Si un décodage renvoie des caractères plausibles mais erronés, la cause la plus probable est que l'encodeur n'a jamais converti le texte en octets UTF-8.
Base64 n’assure aucune confidentialité ni intégrité. Traitez un secret codé exactement comme vous le feriez pour un secret brut, car c’est de cela qu’il s’agit.
Pourquoi décoder localement
Les en-têtes d'authentification de base, les jetons et les URI de données décodent tous en informations d'identification ou en données privées, donc les coller dans un décodeur côté serveur est une divulgation. L'encodeur/décodeur YamlBox Base64 fonctionne dans la page avec une gestion UTF-8 effectuée correctement, prend en charge les alphabets standard et URL-safe, et fonctionne hors ligne.
Base64 Encodeur / Décodeur — questions fréquemment posées
Le cryptage Base64 est-il ?
Non, il s’agit d’un encodage réversible sans clé, donc tout le monde peut le décoder. Il existe pour que les données binaires puissent voyager via des canaux textuels uniquement – jamais pour protéger les données. Utilisez TLS et un véritable cryptage tel que AES-GCM pour la confidentialité.
De quelle taille la sortie Base64 est-elle plus grande ?
Exactement un tiers de plus, plus un peu de remplissage, car trois octets deviennent quatre caractères. Cette surcharge explique pourquoi base64 est utilisé pour les petits actifs en ligne et évité pour les plus gros.
Pourquoi un décodage Base64 renvoie-t-il des caractères étranges ?
Il s'agit généralement d'une incompatibilité d'encodage : le texte original n'a pas été converti en octets UTF-8 avant l'encodage, ou vous décodez des données base64url avec un décodeur standard. Vérifiez les caractères `-` et `_` et confirmez que l'encodeur source a utilisé UTF-8.
Outils mentionnés dans cet article
Plus d'articles à lire
6 minutes de lecture
Décodeur JWT : ce qu'il y a à l'intérieur d'un jeton et ce qui
Utilisez un décodeur JWT pour inspecter l’en-tête, la charge utile et l’expiration d’un jeton – et comprendre pourquoi le décodage n’effectue pas de vérification, les vérifications de réclamation étant derrière la plupart des 401.
5 minutes de lecture
Encodage URL : quand s'échapper et quand casser des choses
URL encode et décode correctement — caractères réservés, plus contre %20, encodeURI contre encodeURIComponent et les bogues de double encodage derrière les liens rompus.
5 minutes de lecture
cURL à récupérer : déplacer une requête du terminal vers le
cURL pour récupérer la conversion pour JavaScript : en-têtes, corps, authentification et méthodes correctement mappés, ainsi que la réalité CORS qui décide si une requête fonctionne.