Comprendre l'encodage Base64
Base64 est un système d'encodage que j'utilise quotidiennement dans mon travail de développeur. Son principe est simple mais puissant : convertir n'importe quelle donnée binaire en une séquence de caractères ASCII imprimables. Pourquoi ? Parce que de nombreux systèmes ne gèrent que du texte.
L'alphabet Base64 comprend 64 caractères : A-Z, a-z, 0-9, + et /. Le caractère = sert de padding pour compléter les groupes. Chaque caractère représente 6 bits, donc 4 caractères Base64 encodent 3 octets de données originales. Cette expansion de 33% est le prix de la compatibilité universelle.
Cas d'utilisation concrets
Data URIs dans CSS/HTML
Inclure des petites images directement dans le code évite des requêtes HTTP supplémentaires. Idéal pour les icônes et sprites sous 10 Ko.
Pièces jointes email
MIME encode les fichiers en Base64 pour les transmettre via le protocole SMTP qui ne supporte que du texte 7-bit ASCII.
APIs et JSON
JSON ne supporte pas les données binaires. Base64 permet d'inclure des fichiers, images ou données cryptées dans des payloads JSON.
Stockage en base de données
Certaines bases de données textuelles peuvent stocker des données binaires encodées en Base64 dans des champs VARCHAR.
Base64 standard vs URL-safe
Le Base64 standard utilise + et / qui ont une signification spéciale dans les URLs (+ devient espace, / est un séparateur de chemin). La variante URL-safe remplace + par - et / par _, permettant d'inclure des données Base64 directement dans les URLs sans encodage supplémentaire. C'est essentiel pour les tokens JWT, les paramètres d'URL, et les identifiants encodés.
Limitations importantes
- Base64 n'est PAS un chiffrement :N'importe qui peut décoder vos données. Ne l'utilisez jamais pour "cacher" des informations sensibles
- Augmentation de taille de 33% :Un fichier de 1 Mo devient 1.33 Mo. Évitez pour les gros fichiers
- Pas de compression :Base64 n'économise pas d'espace, il en consomme plus
- Impact performance :Le décodage de très gros blocs Base64 peut ralentir le navigateur