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
| Outil | Ce qu'il fait | Quand l'utiliser |
|---|---|---|
| Encodeur Base64 | Convertit texte et fichiers en Base64 et inversement, y compris la variante compatible URL | Intégrer une image dans du CSS, lire une clé d'API, ou faire passer du binaire par un champ texte |
| Encodeur URL | Encode et décode les URL et les valeurs de chaîne de requête | Un lien casse au premier espace, à la première esperluette ou au premier caractère non latin |
| Convertisseur de Base | Convertit entre binaire, octal, décimal, hexadécimal et toute base jusqu'à 36, et transforme du texte en octets et inversement | Une 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 texte | Un exemple de code, un commentaire d'utilisateur ou un export affiche < ou & 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
Basicsuivi du Base64 deutilisateur: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
%20devient%2520. Si vous voyez%25dans 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
- Outils de texte - formatez et validez le JSON qui se cache si souvent dans une charge utile encodée.
- Outils de développement - décodez un JWT correctement plutôt que d'en passer les morceaux en Base64 à la main, ou calculez un hachage quand vous voulez une empreinte et non une forme réversible.
- Générateurs - produisent les identifiants et secrets qui finissent ensuite encodés.