Qu'est-ce que Base64?
Base64 est un schéma d'encodage qui convertit les données binaires en texte ASCII en utilisant 64 caractères imprimables (A-Z, a-z, 0-9, +, /). Il est largement utilisé pour transmettre des données binaires via des médias qui ne supportent que le texte, comme l'email (MIME) et les URLs.
Comment fonctionne l'encodage Base64?
L'encodage Base64 fonctionne en divisant l'entrée en groupes de 3 octets (24 bits) et en convertissant chaque groupe en 4 caractères de 6 bits. Lorsque le nombre d'octets n'est pas un multiple de 3, des caractères de remplissage (=) sont ajoutés à la fin.
Exemple de conversion:
Texte original: "ABC"
Binaire: 01000001 01000010 01000011
Groupé (6 bits): 010000 010100 001001 000011
Décimal: 16 20 9 3
Base64: "QUJD"
À quoi sert Base64?
1. Incorporer des Images en HTML/CSS: Les Data URLs permettent d'inclure des images directement dans le code sans requêtes HTTP additionnelles.
<img src="data:image/png;base64,iVBORw0KGg..." />2. Transmission de Données Binaires en JSON: Les APIs REST utilisent fréquemment Base64 pour envoyer des fichiers ou données binaires dans des payloads JSON.
3. Authentification HTTP Basic: Les identifiants sont encodés en Base64 dans l'en-tête Authorization.
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=4. Email (MIME): Les pièces jointes d'emails sont encodées en Base64 pour garantir la compatibilité avec les serveurs qui ne supportent que l'ASCII 7 bits.
5. Stockage Temporaire: Stocker des données binaires dans les cookies, localStorage ou sessionStorage.
Avantages et Inconvénients
✓ Avantages
- • Compatible avec les systèmes qui n'acceptent que le texte ASCII
- • Facile à transmettre par email, URL et JSON
- • Supporté nativement dans tous les langages
- • Sûr pour copier/coller sans perte de données
✗ Inconvénients
- • Augmente la taille de ~33% (overhead)
- • N'est pas du chiffrement (n'offre pas de sécurité)
- • Coût CPU pour encoder/décoder
- • Pas lisible par l'humain
Base64 vs Autres Schémas
| Schéma | Caractères | Overhead | Usage Courant |
|---|---|---|---|
| Base64 | A-Z, a-z, 0-9, +, / | ~33% | Email, JSON, Data URLs |
| Base64URL | A-Z, a-z, 0-9, -, _ | ~33% | URLs, JWT tokens |
| Hexadécimal | 0-9, A-F | 100% | Hashes, couleurs CSS |
| Base32 | A-Z, 2-7 | ~60% | TOTP, codes de secours |
Cas d'usage pratiques
🖼️ Data URL pour favicon
Incorporez un favicon inline sans requête HTTP externe:
🔑 HTTP Basic Auth
Envoyer des identifiants dans des requêtes HTTP:
const credentials = btoa('utilisateur:motdepasse');
headers.Authorization = `Basic ${credentials}`;📧 Pièce jointe d'email
Les protocoles SMTP utilisent Base64 pour les pièces jointes, garantissant que les caractères spéciaux ne corrompent pas le message pendant la transmission.
Base64 N'EST PAS du chiffrement
⚠️ Avertissement Important
Base64 est un schéma d'encodage, pas du chiffrement. N'importe qui peut décoder Base64 instantanément. N'utilisez jamais Base64 pour protéger des mots de passe, tokens ou données sensibles. Pour une vraie sécurité, utilisez des algorithmes de chiffrement comme AES, RSA ou bcrypt.
FAQ - Questions Fréquentes
1. Pourquoi Base64 augmente la taille du fichier?
Parce qu'il convertit 3 octets (24 bits) en 4 caractères de 6 bits chacun. Cela génère un overhead d'environ 33%. Un fichier de 1 Mo devient ~1,33 Mo en Base64.
2. Que signifie le "=" à la fin des chaînes Base64?
Le signe "=" est un remplissage, ajouté lorsque le nombre d'octets d'entrée n'est pas un multiple de 3. Il peut y avoir 0, 1 ou 2 caractères "=" à la fin.
3. Base64 peut-il être utilisé pour les URLs?
Base64 standard utilise "+", "/" et "=" qui sont des caractères spéciaux dans les URLs. Utilisez Base64URL (remplace + par -, / par _ et supprime le remplissage) pour des URLs sûres.
4. Comment convertir des images en Base64?
En JavaScript: utilisez l'API FileReader. Ligne de commande: base64 image.png. En Python: base64.b64encode().
5. Base64 supporte-t-il les caractères Unicode?
Oui! Notre outil utilise encodeURIComponent pour supporter UTF-8, incluant les emojis et caractères accentués.
6. Quelle est la différence entre btoa() et atob()?
btoa() = binary to ASCII (encode). atob() = ASCII to binary (décode). Ce sont des fonctions JavaScript natives du navigateur.