Guides Base64
Ces guides pratiques expliquent ce que fait Base64, quand l’utiliser et comment dépanner des données réelles. Les exemples utilisent le Base64 standard sauf indication contraire.
Tutoriels autonomes associés
- Qu’est-ce que Base64 ?
- JavaScript et UTF-8
- Python Base64
- Base64URL et padding
- Images en URL de données
- Jeux de caractères UTF-8
- Lire un JWT en sécurité
- Erreurs courantes
1. Ce qu’est Base64
Base64 est un encodage binaire vers texte. Il associe chaque groupe de trois octets d’entrée à quatre caractères imprimables choisis parmi A-Z, a-z, 0-9, plus (+) et barre oblique (/). Un signe égal (=) complète le dernier groupe lorsque la longueur d’origine n’est pas divisible par trois. Comme chaque groupe de quatre caractères représente trois octets, la taille augmente généralement d’environ un tiers. Encoder ne masque pas l’information : toute personne possédant la chaîne peut la décoder.
Le format est utile lorsqu’un transport attend du texte alors que les données sont binaires. Les parties MIME d’e-mail, champs JSON, URL de données, fichiers de configuration et charges d’API sont des exemples courants. Il convient moins aux gros fichiers, car l’expansion augmente bande passante et mémoire.
2. Encoder correctement du texte
Le texte doit d’abord être converti en octets avec un jeu de caractères défini. UTF-8 est le meilleur choix par défaut pour les applications modernes, car il représente Unicode de manière cohérente. La chaîne café n’est pas encodée directement depuis les caractères visibles ; ce sont ses octets UTF-8 qui le sont.
Dans un navigateur, choisissez le jeu de caractères source, collez le texte et vérifiez le résultat. Préservez les retours à la ligne volontairement : encoder tout le paragraphe ou chaque ligne séparément produit des chaînes différentes. Avec une API, documentez le charset et la normalisation LF ou CRLF.
3. Décoder du texte ou des fichiers
Les octets décodés ne sont pas toujours du texte. Un PNG, PDF, ZIP ou certificat peut se décoder correctement tout en apparaissant comme des caractères incohérents dans une zone de texte. Utilisez un décodeur orienté fichier lorsque l’entrée commence par une URL de données comme data:application/pdf;base64,... ou lorsque l’origine était binaire.
Les systèmes d’e-mail et de documentation insèrent souvent des espaces ou retours à la ligne dans Base64. Les décodeurs standard peuvent supprimer les retours inoffensifs, mais une modification accidentelle dans l’alphabet corrompt les données. Comparez la signature de type et la longueur lors du dépannage.
Essayez-le avec le décodeur Base64.
4. Base64URL et padding
Les URL traitent plus et barre oblique de façon spéciale ; Base64URL remplace donc + par - et / par _. Beaucoup de producteurs omettent aussi le padding final. Un décodeur URL-safe doit restaurer le padding attendu avant de produire les octets finaux.
Base64URL est courant dans les JSON Web Tokens et les paramètres d’URL. Ce n’est pas du chiffrement et cela ne rend pas un token fiable. Les applications doivent toujours authentifier, autoriser, valider la longueur et protéger les secrets avec un chiffrement ou un design de token approprié.
5. URL de données en HTML et CSS
Une URL de données intègre un type de média et une charge encodée dans une seule chaîne, par exemple data:image/png;base64,.... C’est pratique pour une petite icône, un jeu de test ou une démo autonome. Les grandes URL de données compliquent cache et maintenance, donc les fichiers statiques ordinaires sont souvent meilleurs.
Lors du décodage, gardez les métadonnées avant la virgule séparées de la charge Base64. Le type de média indique comment interpréter les octets ; il ne prouve pas qu’ils sont valides. Vérifiez les signatures de fichiers avant d’afficher un contenu non fiable.
6. Base64 dans les API et JWT
Les API utilisent souvent Base64 pour les champs binaires, mais JSON est déjà du texte et n’en a généralement pas besoin pour les chaînes ordinaires. Les JWT utilisent un header et un payload encodés en Base64URL, séparés par des points. Ces parties sont lisibles, pas confidentielles.
Lors d’une intégration d’API, notez si le padding est requis, si les retours à la ligne sont autorisés, le charset attendu et la taille maximale de charge. Testez l’entrée vide, le texte Unicode, les valeurs d’un ou deux octets et les caractères mal formés.
7. Sécurité et confidentialité
Base64 fournit au mieux une obfuscation. Il n’authentifie pas un message, n’empêche pas la modification et ne protège pas un secret. Traitez le contenu décodé comme une entrée non fiable et validez-le avant de le parser, l’afficher ou l’exécuter.
Pour les flux confidentiels, utilisez une ligne de commande locale ou une bibliothèque hors ligne sous les contrôles de votre organisation. Pour le transport, utilisez HTTPS et un schéma de chiffrement ou de chiffrement authentifié adapté aux données.
8. Erreurs courantes et checklist
“Invalid character” signifie souvent qu’un décodeur standard a reçu des caractères URL-safe ou une ponctuation étrangère. “Incorrect padding” indique souvent une chaîne tronquée ou des signes égal finaux supprimés. Un texte illisible suggère un mauvais charset ; une prévisualisation illisible après décodage réussi peut simplement être du binaire.
Vérifiez dans l’ordre : valeur complète copiée, alphabet standard ou URL-safe identifié, seuls les espaces autorisés supprimés, charset d’origine choisi, longueur en octets comparée et signature attendue inspectée. Gardez un test connu comme SGVsbG8= (texte UTF-8 “Hello”).
Essayez-le avec l’encodeur Base64.
const text = "Hello, Base64!";
const encoded = btoa(unescape(encodeURIComponent(text)));
console.log(encoded); // SGVsbG8sIEJhc2U2NCE=
const decoded = decodeURIComponent(escape(atob(encoded)));
console.log(decoded);
import base64
value = "你好, Base64"
encoded = base64.b64encode(value.encode("utf-8")).decode("ascii")
decoded = base64.b64decode(encoded).decode("utf-8")
print(encoded)
print(decoded)
# Decode a text value on macOS or Linux
printf 'SGVsbG8=' | base64 --decode
# URL-safe decoding in Python
import base64
base64.urlsafe_b64decode("SGVsbG8")
Contenu vérifié : 30 août 2026