Qu'est-ce que Base64
Base64 est un procédé d'encodage de données binaires en texte pur. Il utilise 64 caractères imprimables (A-Z, a-z, 0-9, +, /) pour représenter toute donnée binaire, permettant à des données binaires de transiter par des canaux ne supportant que le texte (JSON, XML, URL, courriel).
Principe de l'encodage
Table de caractères
Base64 utilise 64 caractères : majuscules A-Z (26), minuscules a-z (26), chiffres 0-9 (10), signe plus +, barre oblique /, soit 64 au total. Le signe égal = sert de remplissage en fin de chaîne.
Procédé d'encodage
- Grouper les données d'entrée par blocs de 3 octets (24 bits)
- Décomposer les 24 bits en 4 groupes de 6 bits chacun
- Chaque groupe de 6 bits correspond à un caractère Base64 (2 puissance 6 = 64, soit exactement 64 caractères)
- Compléter avec = si moins de 3 octets
Exemple
3 octets en entrée (24 bits) → 4 caractères Base64. Le nombre d'octets après encodage est donc 4/3 du nombre initial, soit environ 133 %, une augmentation de 33 %.
Pourquoi une augmentation de 33 %
À l'origine, 1 octet représente 256 valeurs (8 bits) ; chaque caractère Base64 ne représente que 64 valeurs (6 bits). Pour représenter la même quantité d'information, un encodage sur 6 bits utilise 8/6 = 4/3 fois plus de caractères qu'un encodage sur 8 bits. La taille après encodage Base64 est donc 4/3 de l'original, soit une augmentation de 33 %.
C'est le coût inhérent de Base64 — troquer de l'espace contre la « transportabilité en texte ».
Exemple d'encodage
Texte « Man » (3 octets ASCII) :
- M = 77 = 01001101
- a = 97 = 01100001
- n = 110 = 01101110
- Assembler en 24 bits : 01001101 01100001 01101110
- Décomposer en 4 groupes de 6 bits : 010011 010110 000101 101110
- Caractères Base64 correspondants : T W F u
- Résultat de l'encodage : TWFu
3 octets deviennent 4 octets, soit exactement 4/3.
Variantes de Base64
Base64 standard
La table de caractères contient + et /, avec remplissage par = en fin de chaîne. Adapté à un usage général.
Base64 adapté aux URL
- et / ont une signification spéciale en URL, remplacés par - et _. Adapté à la transmission par URL.
Base64URL
Variante adaptée aux URL, couramment utilisée dans JWT (JSON Web Token).
Base64 contre Base32 contre Hex
Base64
- Jeu de 64 caractères
- Augmentation de 33 % après encodage
- Caractères incluant majuscules, minuscules, chiffres et +/, sensible à la casse
Base32
- Jeu de 32 caractères (A-Z, 2-7)
- Augmentation de 60 % après encodage
- Insensible à la casse, évite les caractères ambigus, adapté à la saisie humaine
Hex (hexadécimal)
- Jeu de 16 caractères (0-9, a-f)
- Augmentation de 100 % après encodage (deux caractères par octet)
- Le plus simple et le plus compatible, mais taille doublée
Taille : Hex > Base32 > Base64. Pour la compacité, choisir Base64 ; pour la compatibilité et la simplicité, choisir Hex.
Base64 est-il un chiffrement
Non. Base64 est un encodage, pas un chiffrement. N'importe qui peut décoder, il n'y a pas de protection par clé. Considérer Base64 comme un chiffrement est un contresens grave — ce n'est qu'un « déguisement » en texte apparent, le décodage donne le texte en clair.
Pour chiffrer des données sensibles, utilisez un algorithme de chiffrement comme AES ; Base64 ne sert qu'à l'encodage de transport.
Cas d'usage
Transmission de données
Des données binaires transitent par un canal textuel (JSON, XML, URL, courriel), encodées en Base64 sous forme de texte.
Intégration de petites images
De petites images encodées en Base64 sont intégrées en ligne dans HTML/CSS, réduisant les requêtes HTTP (voir Base64 pour les images).
JWT
JSON Web Token utilise Base64URL pour encoder l'en-tête (header) et la charge utile (payload).
URI de données
Le protocole data URL utilise Base64 pour intégrer des ressources.
Authentification Basic Auth
L'authentification HTTP Basic utilise Base64 pour encoder le nom d'utilisateur et le mot de passe (attention, ce n'est pas un chiffrement, à utiliser avec HTTPS).
Encoder/décoder avec DocsAll
L'outil d'encodage et décodage Base64 :
- Saisir le texte ou la chaîne Base64
- Choisir l'encodage ou le décodage
- Convertir en un clic
- Copier le résultat
Traitement côté navigateur, données non transmises.
Pièges fréquents
Le confondre avec un chiffrement
Base64 ne chiffre pas ; ne comptez pas uniquement sur Base64 pour « protéger » des données sensibles.
Augmentation de taille après encodage
Un gros fichier encodé en Base64 gonfle de 33 %, augmentant les coûts de transmission et de stockage. Si un canal binaire est disponible, n'utilisez pas Base64.
Confusion de jeux de caractères
Le Base64 standard contient +/ ; placé dans une URL, il faut échapper ou utiliser la variante adaptée aux URL. Méler les variantes provoque des échecs de décodage.
Le = final ne doit pas être omis
Le caractère de remplissage = fait partie de l'encodage ; l'omettre peut provoquer des erreurs de décodage. Certaines implémentations tolèrent l'omission, mais ce n'est pas conforme.
Résumé
Base64 est un encodage, pas un chiffrement ; il représente le binaire avec 64 caractères et l'augmentation de 33 % est un coût inhérent. Son but est de faire transiter le binaire par un canal textuel. En contexte d'URL, utiliser la variante adaptée aux URL. L'outil d'encodage/décodage de DocsAll s'exécute dans le navigateur, données non transmises.