Comprendre le format Base64 en 2 minutes

La Base64 est un format d'encodage, mais quel est son intérêt et dans quel contexte est-ce intéressant de l'utiliser ?

Article publié le 24/11/2024, dernière mise à jour le 24/11/2024

Vous avez sûrement déjà entendu parlé de la Base64 autour des sujets :

  • Les tokens JWT
  • Le transfert ou le stockage de fichiers
  • Le hashage de données
  • Les certificats
  • Etc…

Dans cet article nous allons comprendre la nature de ce format, ses avantages et comment l’utiliser avec quelques exemples de code.

Qu’est-ce que la Base64 ?

La définition la plus simple que l’on pourrait donner, c’est que la Base64 est un format d’encodage des données, tout comme le binaire, l’hexadécimal, etc…

La différence avec les autres encodage vient de l’ensemble des caractères alphanumériques pour représenter ces fameuses données.

En binaire on utilise les caractères de 0 à 1, en hexadécimal on utilise les caractères 0 à 9 et de A à F, et en Base64, on utilise :

  • Les caractères de a à z (minuscule)
  • Les caractères de A à Z (majuscule)
  • Les chiffres de 0 à 9
  • Les caractères spéciaux “+” et “/”

À noter qu’on utilise également le caractère spécial “=” qui sert à remplir les bits manquants à la fin de la séquence.

C’est donc du nombre de caractères qui sert à l’encodage que ce format tire son nom “Base64”, pour 64 caractères utilisés

On utilise ce format pour encoder des données brutes (ou “binaires”), vers un format sous la forme d‘une chaîne de caractères. Exemple, le texte suivant :

Lorem ipsum dolores sit

Devient en Base64 :

TG9yZW0gaXBzdW0gZG9sb3JlcyBzaXQ=

Quel intérêt ?

La question qui se pose souvent est : pourquoi utiliser la Base64 plutôt que la représentation binaire, ou hexadécimale ?

L’intérêt principal de la Base64 réside dans sa “compatibilité”

Ce format permet de transmettre des données binaires (des fichiers par exemple) dans des protocoles ou des formats de fichiers qui sont fait pour transporter du texte simple.

À l’origine, la Base64 a été inventée pour transmettre des fichiers dans des e-mails, sans risquer que les données binaires du fichier ne soit mal interprétée par protocol SMTP.

Comme la Base64 n’est constituées que par des caractères communs, visibles et même imprimables, les données sont compatibles avec n’importe quel système qui transporte (ou stocke) du texte.

Quel inconvénient ?

Dû à son format, les données d’un fichier converties en Base64 sont en général 33-37% plus volumineuses que la version binaire.

C’est pour cela qu’il faut utiliser cet encodage uniquement lorsqu’il y a un vrai intérêt, comme dans les headers HTTP, pour les jetons JWT par exemple !

nicolasbrondinbernard_A_vintage_notepad._100_white_background.__88c54678-1ff4-497b-be1b-cf1f4e05948d.png

Comment l’utiliser ?

En JavaScript

Il existe des fonctions dédiés à l’encodage Base64 en JavaScript, qui sont disponible dans le navigateur mais également en NodeJS et tous les autres environnements.

Pour encoder une donnée en Base64, nous allons utiliser btoa(), comme ceci :

const data = "hello world";
const base64 = btoa(data);
// "aGVsbG8gd29ybGQ="

À noter que le nom de la fonction signifie “Binary” to “Ascii”

Et pour décoder une chaîne en Base64, nous allons utiliser la fonction inverse atob() :

const base64 = "aGVsbG8gd29ybGQ=";
const data = btoa(base64);
// "hello world"

Dans d’autres langages

La Base64 est très utilisée, vous trouverez donc des utilitaires dans tous les langages majeurs pour vous aider :


Vous avez terminé l'article ?

Commentaires (1)

pour laisser un commentaire

Cody

11/25/2024, 11:10 AM

Merci à Akanoa sur X d'avoir mentionné le fait que l'encodage/décodage peuvent être implémentés de différentes manières, comme expliqué dans cet article 👇

https://codescene.com/engineering-blog/base-64-padding-and-urls

Si c'est le cas, le décodage peut dysfonctionner, avec ou sans erreur selon l'implémentation.