Comment décoder des chaînes Base64 (et des payloads JWT)

Base64 est un encodage réversible, pas du chiffrement. Décodez-le en une étape, gérez Unicode correctement et lisez les sections JWT qui utilisent Base64url.

Ce qu’est vraiment Base64

Base64 fait correspondre des données binaires à 64 caractères ASCII imprimables. C’est totalement réversible et sans clé, donc c’est un encodage, pas un chiffrement — ne l’utilisez jamais pour « cacher » des secrets.

Encoder et décoder

Dans le navigateur, encodez avec btoa et décodez avec atob. Pour du texte non ASCII, faites un aller-retour par UTF-8 pour que des caractères comme é, ü ou 你 survivent au lieu de devenir des octets corrompus.

Lire un JWT

Un JWT, ce sont trois sections Base64url séparées par des points : header, payload et signature. Décodez les deux premières pour lire les claims. La signature est binaire et n’est pas faite pour être lue par un humain.

Base64 vs Base64url

Base64 standard utilise + et / avec un padding =. La variante URL-safe Base64url les remplace par - et _ et supprime le padding pour que la valeur passe sans risque dans une URL ou un JWT.

Décoder n’est pas vérifier

Décoder un JWT révèle les claims mais ne dit rien sur son authenticité. N’importe qui peut forger un token dont le payload dit "role":"admin" ; seule la signature, vérifiée avec la clé de l’émetteur, prouve que le token est réel. Ne prenez jamais une décision de confiance sur un token non vérifié.

Claims JWT courants et leur sens

iss est l’émetteur, sub le sujet (id utilisateur), aud l’audience visée, exp l’expiration (secondes Unix), iat la date d’émission, nbf « not before » et jti un id unique. Les claims personnalisés cohabitent avec ceux-ci. Vérifiez toujours exp et aud côté serveur, pas seulement côté client.

Padding et variantes URL-safe

Base64url arrive souvent sans le padding =. Pour décoder dans du code, complétez la longueur à un multiple de 4 avec des =, remplacez - par + et _ par /, puis lancez un décodeur Base64 normal. atob ne prend pas Base64url directement — la conversion doit être faite avant.