YamlBox

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

Parcourez la liste complète des 19 outils

Plus d'articles à lire

Tous les 19 messages →