Outils Encodage

Outils pour encoder et décoder des données — Base64, encodage d'URL et bases numériques comme le binaire et l'hexadécimal — fonctionnant entièrement dans votre navigateur.

Tâches rapides

Un clic ouvre l’outil déjà réglé pour la tâche.

Outils d'Encodage en Ligne - Base64 et URL dans le Navigateur

Encoder n'est pas chiffrer. Cela ne cache rien et ne protège rien. Le rôle de l'encodage est de prendre des données qui casseraient quelque chose - un canal qui ne transporte que du texte, une URL qui traite & comme un séparateur, un en-tête de courriel antérieur à Unicode - et de leur donner une forme de caractères qui survit au trajet. Les outils de cette catégorie le font dans les deux sens, entièrement dans votre navigateur.

Cette distinction mérite d'être dite sans détour, car c'est de loin le malentendu le plus répandu du domaine. Le Base64 est réversible par n'importe qui, instantanément, sans clé. Un mot de passe stocké en Base64 est un mot de passe stocké en clair avec une étape de plus. Qui a besoin de secret a besoin de cryptographie, pas d'encodage.

Ce que contient cette catégorie

OutilCe qu'il faitQuand l'utiliser
Encodeur Base64Convertit texte et fichiers en Base64 et inversement, y compris la variante compatible URLIntégrer une image dans du CSS, lire une clé d'API, ou faire passer du binaire par un champ texte
Encodeur URLEncode et décode les URL et les valeurs de chaîne de requêteUn lien casse au premier espace, à la première esperluette ou au premier caractère non latin
Convertisseur de BaseConvertit entre binaire, octal, décimal, hexadécimal et toute base jusqu'à 36, et transforme du texte en octets et inversementUne valeur d'un vidage hexadécimal, un masque de bits ou une permission doit être lue comme un nombre
Encodeur d'Entités HTMLÉchappe un texte pour le HTML avec des entités nommées ou numériques, et décode n'importe quelle entité en texteUn exemple de code, un commentaire d'utilisateur ou un export affiche &lt; ou &amp; là où il devrait afficher < ou &

Ce que fait réellement le Base64

Le Base64 prend trois octets à la fois - 24 bits - et les réécrit en quatre caractères tirés d'un alphabet de 64 : A-Z, a-z, 0-9, plus + et /. Comme 64 vaut 2 puissance 6, chaque caractère de sortie porte exactement six bits. Quand l'entrée ne se divise pas par trois, la sortie est complétée par des = pour que la longueur soit toujours un multiple de quatre.

La conséquence relève de l'arithmétique, pas de l'opinion : la sortie Base64 est environ 33% plus volumineuse que l'entrée. Encoder une image de 300 Ko pour l'intégrer dans une feuille de style produit à peu près 400 Ko de texte. C'est un coût réel, et la raison pour laquelle l'intégration vaut le coup sur de petites icônes et rarement sur des photographies.

Les caractères + et / posent problème dans une URL, où ils ont déjà un sens. La variante compatible URL les remplace par - et _ et abandonne généralement le remplissage. C'est celle qu'utilisent les JSON Web Tokens, et confondre les deux explique qu'un jeton échoue parfois dans un outil et fonctionne dans un autre.

Ce que fait réellement l'encodage-pourcent

Une URL a une grammaire. ? ouvre la chaîne de requête, & sépare les paramètres, = relie un nom à une valeur, # ouvre le fragment, et l'espace n'est pas autorisé du tout. Quand une valeur contient l'un de ces caractères, il faut l'échapper, sinon l'URL signifie autre chose que ce que vous vouliez. L'encodage-pourcent remplace le caractère par % suivi de sa valeur d'octet en hexadécimal : l'espace devient %20, & devient %26, / devient %2F.

Le texte non ASCII est encodé comme ses octets UTF-8, un %XX par octet. Un seul caractère persan ou japonais devient généralement trois échappements. C'est pourquoi une URL contenant un terme de recherche en écriture non latine paraît tellement plus longue que le terme lui-même.

Le piège consiste à savoir quelle partie de l'URL vous encodez. Encoder l'URL entière transforme ses :// et ses / en échappements et la détruit. Vous voulez presque toujours encoder une valeur de paramètre, puis assembler l'URL autour. L'encodeur URL fait les deux, mais le choix vous revient.

Les bases numériques : l'encodage sous tous les autres

Le Base64 et l'encodage-pourcent travaillent tous deux sur des octets, et les octets s'écrivent le plus souvent en hexadécimal ou en binaire. Le convertisseur de base lit une valeur dans n'importe quelle base et l'affiche d'un coup dans les autres, sans limite de 64 bits, et son onglet Texte montre les octets UTF-8 qui se cachent derrière une chaîne. C'est le moyen le plus rapide de voir pourquoi é occupe deux octets, pourquoi %C3%A9 est sa forme encodée en pourcent, et pourquoi 0xFF vaut 255.

Où vous croiserez ces encodages

  • Data URI - data:image/png;base64,... intègre une image directement dans du HTML ou du CSS et économise une requête.
  • Authentification HTTP Basic - l'en-tête est littéralement Basic suivi du Base64 de utilisateur:motdepasse. Réversible par quiconque le voit, d'où sa place uniquement à l'intérieur de TLS.
  • JSON Web Tokens - trois segments Base64 compatibles URL reliés par des points. La charge utile est lisible sans aucune clé.
  • Pièces jointes de courriel - MIME transporte du binaire en Base64 depuis le début des années 1990, et le fait toujours.
  • Chaînes de requête - tout terme de recherche, cible de redirection ou valeur de filtre contenant un espace ou un symbole.
  • Fichiers de configuration et de secrets - les secrets Kubernetes, les clés de comptes de service et les certificats sont couramment stockés en Base64.

Échecs courants et leurs causes

  • Double encodage. Une valeur est encodée par votre code puis à nouveau par un framework, et %20 devient %2520. Si vous voyez %25 dans une URL, quelque chose a encodé un signe pourcent qui était déjà un échappement.
  • Mauvais alphabet Base64. Un JWT qui refuse de se décoder est le plus souvent du Base64 compatible URL passé à un décodeur standard, ou l'inverse.
  • Remplissage manquant. Certains producteurs suppriment le = final. Les décodeurs stricts rejettent le résultat, les tolérants le restaurent.
  • Encoder l'URL entière. Le schéma et le chemin sont échappés et le lien ne résout plus.
  • Croire que c'est sécurisé. Du Base64 dans un cookie, un en-tête ou un fichier de configuration est lisible par quiconque peut lire le fichier.
  • Les signes plus dans une chaîne de requête. Dans des données de formulaire, + signifie espace ; dans un chemin, il signifie un plus littéral. Le même caractère, deux sens.

Pourquoi il importe que cela tourne en local

Les chaînes que l'on a besoin d'encoder et de décoder sont exagérément sensibles : en-têtes d'autorisation, jetons de session, clés de comptes de service, URL signées. Coller l'une d'elles dans un site qui la traite côté serveur revient à remettre un identifiant vivant à un tiers. Les deux outils d'ici s'exécutent dans le navigateur : l'entrée ne quitte jamais l'onglet, et vous pouvez le vérifier dans le panneau réseau.

Catégories liées

Questions Fréquentes

Quelle est la différence entre l'encodage Base64 et l'encodage d'URL ?
Base64 convertit des données binaires ou textuelles en un format compact et sûr pour le texte, utilisé par exemple dans les data URI, les e-mails et le JSON. L'encodage d'URL (encodage en pourcentage) échappe les caractères qui ne peuvent pas être utilisés directement dans une URL, comme les espaces et les symboles spéciaux.
Ces outils d'encodage sont-ils sûrs pour des données sensibles ?
L'encodage n'est pas du chiffrement — il change seulement le format des données, pas leur sécurité. N'importe qui peut décoder du texte en Base64 ou encodé en URL, ne comptez donc pas dessus pour protéger des informations sensibles. Le traitement se fait de toute façon localement dans votre navigateur.
Puis-je décoder des données encodées ailleurs ?
Oui, tant qu'il s'agit de texte Base64 ou encodé en pourcentage valide, ces outils le décoderont pour retrouver sa forme originale.