base64encodingbinarytutorial

Qu'est-ce que l'encodage Base64 ? Guide complet

· Cosyslabs

L'encodage Base64 convertit les données binaires en texte ASCII en utilisant un ensemble de 64 caractères imprimables. Il est utilisé pour transmettre de manière sécurisée du contenu binaire via des protocoles textuels comme HTTP et les e-mails, et pour intégrer des images ou des fichiers directement dans des charges utiles HTML, CSS et JSON sans corruption ni perte de données.

Pourquoi Base64 existe

De nombreux protocoles — SMTP, les en-têtes HTTP, XML — ont été conçus pour transporter du texte, pas des octets binaires arbitraires. Lorsque vous envoyez des données binaires brutes via ces canaux, certaines valeurs d'octets sont interprétées comme des caractères de contrôle, des sauts de ligne ou des terminateurs nuls, ce qui corrompt le payload. Base64 résout ce problème en mappant toute séquence d'octets possible vers un sous-ensemble sûr de caractères ASCII imprimables.

Comment fonctionne Base64 : Groupes de 6 bits

Base64 fonctionne en regroupant les données binaires d'octets de 8 bits en morceaux de 6 bits.

  1. Prendre trois octets d'entrée (24 bits au total).
  2. Diviser en quatre groupes de 6 bits.
  3. Mapper chaque valeur de 6 bits (0–63) vers un caractère de l'alphabet Base64.

L'alphabet Base64 utilise :

  • A–Z (valeurs 0–25)
  • a–z (valeurs 26–51)
  • 0–9 (valeurs 52–61)
  • + et / (valeurs 62–63)
  • = comme rembourrage

Exemple :

Entrée:  "Man"
Binaire: 01001101 01100001 01101110
Groupes: 010011 010110 000101 101110
Valeurs: 19     22     5      46
Sortie:  T      W      F      u  → "TWFu"

Lorsque la longueur de l'entrée n'est pas divisible par trois, un rembourrage = ou == est ajouté.

Encodage et décodage en JavaScript

JavaScript moderne fournit un support Base64 intégré pour les environnements navigateur :

// Encoder
const encodé = btoa("Hello, World!");
console.log(encodé); // "SGVsbG8sIFdvcmxkIQ=="

// Décoder
const décodé = atob("SGVsbG8sIFdvcmxkIQ==");
console.log(décodé); // "Hello, World!"

Pour Node.js (v16+), utilisez Buffer :

// Encoder
const encodé = Buffer.from("Hello, World!").toString("base64");

// Décoder
const décodé = Buffer.from("SGVsbG8sIFdvcmxkIQ==", "base64").toString("utf8");

Base64 sécurisé pour les URL

Le Base64 standard utilise + et /, qui sont des caractères réservés dans les URL. Le Base64 sécurisé pour les URL les remplace :

StandardSécurisé URL
+-
/_
=omis ou %3D

Les tokens JWT utilisent le Base64 sécurisé pour les URL sans rembourrage. Pour décoder un payload JWT, vous devez restaurer le rembourrage avant de décoder :

function décoderPayloadJwt(token) {
  const [, payload] = token.split(".");
  const rembourré = payload.replace(/-/g, "+").replace(/_/g, "/");
  const longueurRembourrage = (4 - (rembourré.length % 4)) % 4;
  return JSON.parse(atob(rembourré + "=".repeat(longueurRembourrage)));
}

URI de données

Les URI de données intègrent le contenu des fichiers directement dans HTML ou CSS via Base64 :

<!-- Image PNG en ligne -->
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." />

<!-- SVG en ligne dans CSS -->
.icone {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucy...");
}

Les URI de données sont utiles pour :

  • Les petites icônes qui réduisent les requêtes HTTP
  • Les applications offline/PWA qui ont besoin d'actifs intégrés
  • Les modèles d'e-mail où les images externes sont bloquées

Évitez les URI de données pour les grandes images. Elles augmentent la taille du HTML, contournent le cache du navigateur et ne peuvent pas être chargées en différé.

Cas d'utilisation courants

Authentification HTTP de base

L'en-tête Authorization utilise Base64 pour encoder les identifiants :

Authorization: Basic dXNlcjpwYXNzd29yZA==

Ceci se décode en user:password. Base64 fournit ici de l'encodage, pas du chiffrement — utilisez toujours HTTPS.

Pièces jointes d'e-mail (MIME)

SMTP transfère les e-mails en texte. MIME encode les pièces jointes binaires en blocs Base64 :

Content-Transfer-Encoding: base64

SGVsbG8sIFdvcmxkIQ==

Réponses d'API

Certaines API renvoient des données binaires (miniatures, PDF) sous forme de chaînes Base64 dans du JSON :

{
  "nom_fichier": "rapport.pdf",
  "contenu": "JVBERi0xLjQK..."
}

Base64 n'est pas du chiffrement

Base64 est réversible sans clé — n'importe qui peut le décoder instantanément. Il ne fournit aucune sécurité. N'utilisez jamais Base64 pour « cacher » des mots de passe, des clés API ou des données sensibles.

Surcharge de taille

Base64 augmente la taille des données d'environ 33 % : chaque 3 octets deviennent 4 caractères. Pour un fichier binaire de 1 Mo, la représentation Base64 fait environ 1,37 Mo. Combinez avec la compression gzip lors de la transmission pour récupérer partiellement la taille.

Taille originaleTaille Base64
1 Ko~1,37 Ko
100 Ko~137 Ko
1 Mo~1,37 Mo

Essayez maintenant

Utilisez l'Outil Encodeur/Décodeur Base64 pour encoder et décoder des chaînes, des fichiers et des URI de données directement dans votre navigateur — aucune donnée ne quitte votre machine.

Résumé

  • Base64 convertit le binaire en texte en utilisant 64 caractères imprimables
  • Fonctionne en regroupant des octets de 8 bits en morceaux de 6 bits
  • La variante sécurisée URL remplace +// par -/_
  • Utilisé dans l'authentification HTTP, les pièces jointes d'e-mail, les URI de données et les API
  • Pas du chiffrement — ne fournit aucune garantie de sécurité
  • Ajoute ~33 % de surcharge de taille

Plus d'outils de Cosyslabs

Vous travaillez avec des données binaires et des formats de fichiers ? Ces outils Cosyslabs couvrent des cas d'usage adjacents :

  • PDF Convert All — Convertissez, fusionnez, compressez et extrayez des PDFs en ligne.
  • Unit Convert All — Convertissez des tailles de stockage de données (octets ↔ Ko ↔ Mo ↔ Go).
  • Routine Toolkit — Utilitaires de productivité du quotidien : compteur de mots, calculatrice de prêt, et plus.
  • Cosyslabs — Le studio derrière Dev Tools !, PDF Convert All, et plus.