Le Base64 est une notation, pas un chiffrement
Le Base64 réécrit des octets quelconques en n'utilisant que A-Z, a-z, 0-9 et deux symboles. Trois octets se répartissent en quatre groupes de six bits, chacun devenant un caractère, si bien que la sortie fait environ quatre tiers de l'entrée. Les signes égal complètent le dernier groupe incomplet.
Son but est d'acheminer des données binaires par des canaux qui n'acceptent que du texte : pièces jointes de courrier, images intégrées directement dans une page, identifiants placés dans un en-tête HTTP. Cela empêche les systèmes intermédiaires d'abîmer des octets qu'ils n'attendaient pas.
Les caractères multioctets sont d'abord convertis en UTF-8, puis encodés. Le mot café fait cinq octets parce que é en prend deux ; il donne donc huit caractères Base64, autant qu'un mot de cinq lettres sans accent. La longueur de la sortie ne dit donc rien de fiable sur le nombre de caractères d'origine.
Ne prenez pas l'encodage pour de la sécurité
N'importe qui inverse le Base64 instantanément. Stocker un mot de passe ou un jeton en Base64 ne le dissimule pas ; cela le rend seulement pénible à lire, et il est entièrement exposé dès qu'il atteint un journal ou une sauvegarde. Les valeurs qui doivent rester secrètes exigent chiffrement ou hachage.
Glisser du Base64 brut dans une URL la casse. Les caractères plus et barre oblique de l'alphabet standard signifient autre chose dans une adresse web, si bien que les URL réclament la variante sûre qui remplace ces deux caractères.
Un décodage qui échoue tient généralement à un problème de longueur ou de remplissage. La longueur d'une chaîne Base64 doit être un multiple de quatre, et les retours à la ligne ou espaces parasites ramassés en copiant feront rejeter la chaîne par l'analyseur.