Décodeur et encodeur Base64

Collez du Base64 pour le lire, ou saisissez du texte ou choisissez un fichier pour l’encoder. L’UTF-8 est géré correctement, les deux alphabets et le remplissage manquant sont compris, et une entrée invalide est signalée au caractère exact où elle échoue.

Sens
Les sauts de ligne et les espaces sont ignorés. L’alphabet standard et l’alphabet URL-safe fonctionnent tous deux, avec ou sans remplissage =, de même qu’une URL data:.

Collez du Base64 dans le champ pour le décoder.

Le Base64 est partout dans le travail sur serveur : secrets Kubernetes, clés SSH, en-têtes d’authentification basique, certificats. Vous cherchez le serveur lui-même ? À partir de 3,02 € par mois aujourd’hui, parmi 2 226 serveurs.

Fonctionne dans votre navigateur : rien de ce que vous saisissez n’est envoyé ailleurs.

Comment fonctionne le Base64

Le Base64 écrit n’importe quels octets avec 64 caractères sûrs, pour que des données binaires puissent transiter par des systèmes conçus pour le texte : e-mail, JSON, URL, en-têtes HTTP. Chaque groupe de 3 octets (24 bits) devient 4 caractères de 6 bits. Quand les données ne se divisent pas en groupes de 3, le dernier groupe est plus court et des signes = le complètent jusqu’à 4 caractères.

M        a        n
01001101 01100001 01101110
010011 010110 000101 101110
T      W      F      u        →  TWFu

Le texte est d’abord transformé en octets, ici en UTF-8, l’encodage qu’attendent presque tous les systèmes. C’est pourquoi « é » devient w6k= ici ; la fonction btoa() du navigateur échoue sur de tels caractères. La variante URL-safe de la RFC 4648 remplace + et / par - et _, qui n’ont pas besoin d’être échappés dans les adresses et les noms de fichiers, et supprime souvent le remplissage. Les JSON Web Tokens l’utilisent.

Au décodage, la page accepte les deux alphabets, le remplissage manquant, les sauts de ligne et un préfixe d’URL data:. Si un caractère n’est pas du Base64, elle indique lequel et où. Si les octets ne forment pas un texte UTF-8 valide, ils sont affichés en hexadécimal, avec un téléchargement qui devine le type de fichier d’après ses premiers octets.

Exemple

Le mot « foobar » fait 6 octets : il s’encode en 8 caractères sans remplissage, Zm9vYmFy. « fooba » fait 5 octets et reçoit un « = » : Zm9vYmE=. « f » seul devient Zg==. Ce sont les valeurs de test de la RFC 4648.

Questions

Le Base64 est-il du chiffrement ?

Non. Le Base64 est un encodage : n’importe qui peut le décoder sans clé, exactement comme le fait cette page. Il ne cache rien. Un mot de passe dans un en-tête d’authentification basique ou dans un secret Kubernetes est seulement encodé en Base64 : protégez-le avec HTTPS et des règles d’accès, pas avec l’encodage.

Pourquoi le Base64 est-il plus gros que l’original ?

Chaque groupe de 3 octets devient 4 caractères : le résultat est donc environ 33 % plus grand, plus jusqu’à deux signes =. Les sauts de ligne tous les 76 caractères, comme dans l’e-mail, en ajoutent un peu plus. C’est le prix de n’utiliser que des caractères de texte sûrs.

Qu’est-ce que le Base64 URL-safe ?

La variante définie à la section 5 de la RFC 4648. Elle utilise - et _ à la place de + et /, qui ont un sens particulier dans les URL et les noms de fichiers, et omet souvent le remplissage =. Les JSON Web Tokens et de nombreuses API l’utilisent. Cette page décode les deux alphabets, et encode dans l’un ou l’autre avec l’option ci-dessus.

Pourquoi le décodage donne-t-il des caractères étranges ?

Soit les données ne sont pas du texte, comme une image, une archive ou une clé, soit le texte a été encodé avec un autre jeu de caractères que l’UTF-8. Cette page affiche les données binaires en hexadécimal et permet de les télécharger sous forme de fichier. Si quelques lettres sont fausses dans un texte par ailleurs lisible, la source a probablement utilisé Latin-1 ou Windows-1252.

Comment décoder du Base64 en ligne de commande ?

Sous Linux : echo 'Zm9vYmFy' | base64 -d. Sous macOS : base64 -D, ou base64 --decode sur les versions récentes. Pour encoder un fichier : base64 -w 0 file sous Linux pour une seule longue ligne, base64 -i file sous macOS. Dans PowerShell : [Convert]::FromBase64String('Zm9vYmFy').