Comment décoder du Base64URL
- Collez la chaîne dans Entrée · Base64. La page s’ouvre avec un exemple URL-safe.
- Lisez le résultat dans Sortie · texte. La ligne d’état indique la variante (Base64URL ou Standard), le nombre d’octets décodés et le type détecté. Si le remplissage manquait, elle affiche « Remplissage manquant ajouté automatiquement. »
- Le JSON, contenu habituel des jetons, est indenté par Formater le JSON.
- Pour un contenu binaire, comme des hachages ou des identifiants aléatoires, l’outil indique que les données sont binaires et renvoie vers un décodeur adapté.
- Copier la sortie ou Télécharger le résultat.
Pour encoder, utilisez l’encodeur Base64URL. Pour convertir une chaîne Base64URL en Base64 standard sans la décoder, utilisez Base64URL en Base64.
Exemples
| Base64URL | Décodé | Remarque |
|---|---|---|
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 | {"alg":"HS256","typ":"JWT"} | Un en-tête JWT typique |
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImFkbWluIjp0cnVlfQ | {"sub":"1234567890","name":"Ada","admin":true} | Un payload JWT ; remplissage restauré |
c3ViamVjdHM_X2Q | subjects?_d | _ est le / URL-safe |
8J-Riw | 👋 | - est le + URL-safe |
E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM | 32 octets binaires | Un hachage SHA-256, l’exemple PKCE de la RFC 7636 |
Pour le hachage de la dernière ligne, une sortie texte n’a aucun sens. Ouvrez-le dans Base64 en hex pour voir les octets sous la forme 13 d3 1e 96 ....
Le remplissage, et pourquoi on peut le restaurer
Le Base64URL s’écrit généralement sans =. Aucune information n’est perdue : une chaîne valide a une longueur de 4n, 4n + 2 ou 4n + 3 caractères, et le reste indique au décodeur si le dernier groupe contient un ou deux octets. L’outil ajoute les = manquants avant de décoder et le signale dans la ligne d’état.
Une longueur de 4n + 1 ne peut jamais se produire. Si vous voyez l’erreur « Longueur incorrecte : un caractère de trop ou de moins », un caractère a été perdu ou ajouté lors de la copie de la valeur, par exemple à un saut de ligne dans un e-mail ou un journal. Le remplissage expliqué montre le calcul.
Beaucoup de décodeurs standard sont moins tolérants. atob() dans les navigateurs rejette - et _ avec InvalidCharacterError, et base64.urlsafe_b64decode de Python lève Incorrect padding quand le = manque.
Jetons, cookies et paramètres d’URL
- JWT. Un jeton ressemble à
xxxxx.yyyyy.zzzzz. Les deux premières parties sont du JSON en Base64URL, la troisième est la signature, binaire. Décodez les parties une par une ici, ou collez le jeton entier dans le décodeur JWT, qui affiche aussi l’expiration et vérifie les signatures. Base64 dans les JWT explique le format. - Cookies et identifiants de session. Certains cookies de session de frameworks, ceux de Flask par exemple, assemblent des données Base64URL et une signature avec des points. Ne décodez que la partie données.
- Paramètres d’URL. Le
stateOAuth, les cibles de redirection et les liens de partage transportent parfois du JSON en Base64URL. Si la valeur contient%2Fou%2B, elle a en plus été encodée en pourcent et doit d’abord être décodée comme une URL.
Si une chaîne mélange - ou _ avec + ou /, le décodeur s’arrête avec « L’entrée mélange des caractères standard (+ /) et URL-safe (- _) ». Cela signifie en général que deux valeurs ont été accolées ou qu’une seule a été convertie en partie.
Décoder du Base64URL dans le code
// Node.js
Buffer.from("c3ViamVjdHM_X2Q", "base64url").toString("utf8"); // "subjects?_d"
// Browsers with Uint8Array.fromBase64
new TextDecoder().decode(Uint8Array.fromBase64("c3ViamVjdHM_X2Q", { alphabet: "base64url" }));
import base64
def b64url_decode(s: str) -> bytes:
return base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))
b64url_decode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9") # b'{"alg":"HS256","typ":"JWT"}'
La ligne de remplissage fonctionne pour toute longueur d’entrée valide en Base64. Plus de détails dans Base64 en Node.js, JavaScript et Python.
FAQ
Comment décoder du Base64URL ?
Collez-le ci-dessus ; aucun réglage n’est nécessaire. Dans le code, remplacez - par + et _ par /, ajoutez des = jusqu’à ce que la longueur soit un multiple de 4 et décodez comme du Base64 normal, ou utilisez un décodeur URL-safe comme Buffer.from(s, "base64url") de Node.
Pourquoi ai-je une erreur à propos du caractère « . » ?
Vous avez collé un JWT entier. Ses trois parties sont séparées par des points, et chacune doit être décodée séparément. Collez une seule partie, ou utilisez le décodeur JWT pour le jeton complet.
Pourquoi la ligne d'état indique-t-elle Standard pour ma chaîne Base64URL ?
La chaîne ne contient aucun des caractères -, _, + ou / : elle est donc valide dans les deux alphabets et se décode de la même façon dans les deux cas. Beaucoup d’en-têtes JWT sont dans ce cas.
Et si la valeur est encore encodée en pourcent ?
Un = encodé (%3D) est pris en charge. D’autres échappements comme %2F signifient que la valeur est passée par un encodage d’URL ; passez-la d’abord dans le décodeur d’URL.