Base 64 – Ce que c’est

Savez-vous qu’au début de l’informatique, la majorité des tâches s’effectuaient en mode texte avec une console texte? Même envoyer un courriel était fait ainsi. C’est pourquoi le protocole de communication utilisé pour transmettre des messages électroniques est en format texte. Il n’est donc pas possible d’envoyer des données binaires comme des images par courriel.


Je vous entends déjà commencer à vous demander ce que je peux bien raconter étant donné qu’il n’est pas rare de nos jours de recevoir des pièces jointes comme des images et des archives ZIP. Si c’est possible, c’est grâce à une technique spéciale qui permet d’encoder un fichier binaire en texte. Avant d’aller plus loin dans l’explication de la méthode employée, prenons un exemple concret.
J’ai créé pour l’occasion une petite image au format JPG qui n’est que de 5 par 5 pixels et que j’ai nommé « image.jpg ». La voici:

 

Ce que vous voyez, c’est l’affichage des données binaires par un logiciel d’imagerie qui comprend ce qu’elles veulent dire. Par contre, si vous ouvrez ce même fichier dans un éditeur texte tel Notepad, vous verrez ceci:

N’est-ce pas magnifique? Essayez d’écrire cela avec votre clavier dans un logiciel d’envoi de courriels dans une console texte. Bonne chance pour trouver les touches! Si vous avez bien regardé le contenu de ce fichier, vous aurez remarqué qu’il y a des lettres un peu partout et même certaines forment des phrases telles que « Paint.NET v3.5.10 ». Qu’est-ce que représente ce que nous voyons?
En gros, toutes les données sur les ordinateurs sont conservées avec seulement des 1 et des 0. C’est du binaire étant donné que c’est deux valeurs possibles. En plaçant deux nombres binaires ensemble (aussi appelés deux bits), nous pouvons faire quatre possibilités: 00, 01, 10 et 11. En ajoutant un troisième bit, nous doublons pour huit possibilités. Si nous continuons jusqu’à huit valeurs consécutives (un octet), cela donne 256 possibilités d’agencements. Avec ces 256 possibilités, nous pouvons leur associer chacun un symbole, comme les chiffres, les lettres minuscules, les lettres majuscules, les accents et bien d’autres. En ouvrant un fichier en mode texte, chaque groupe de 8 bits (1 octet) est lu et sa correspondance en symbole graphique est affichée sur l’écran.
Si vous voulez voir la représentation de chaque symbole de 0 à 255, vous pouvez connaitre toutes les correspondances en regardant une table ASCII. En la regardant, vous verrez que de 0 à 31, ce sont des caractères de contrôles comme des retours de ligne. Ensuite, la valeur 32 représente un espace, s’en suit quelques symboles de ponctuations, puis les chiffres (48 à 57), les lettres majuscules (65 à 90) et pour terminer, les lettres minuscules (97 à 122). Tout le restant est du charabia pour le commun des mortels.
Pour revenir à ce que nous voyons dans l’éditeur de texte, il faut comprendre qu’il y a deux formats de fichiers possibles : binaires et textes. Les fichiers textes ne vont avoir à l’intérieur d’eux que des données que votre clavier peut écrire tandis que les fichiers binaires utilisent toute la gamme des symboles puisque ce ne sont pas des humains qui vont lire le contenu avec un fichier texte, mais plutôt la machine qui va le lire et le traduire dans une autre représentation, comme dans notre cas, une image.
Maintenant, comment pouvons-nous envoyer un fichier quelconque par courriel alors que seulement du texte peut être envoyé? Pour ce faire, il faut simplement changer de base : en lisant un octet à la fois (8 bits), cela nous donne 256 possibilités de symboles. Pour réduire ce nombre à une quantité qui permet de se limiter aux caractères, aux nombres et aux ponctuations puisqu’ils sont du texte, il suffit de lire moins de bits. En n’en lisant que 6 à la fois, cela donne 64 symboles et c’est un nombre acceptable pour transformer le fichier binaire en format texte. Voici comment la lecture d’une même séquence se fait normalement et avec ce procédé :

En groupe de 8 bits

En groupe de 6 bits

Après avoir lu 6 bits, un symbole texte y est associé et ces bits peuvent être transmis dans n’importe quel protocole texte. Reprenons l’image du début et encodons-la en base64 avec cette ligne de commande Linux :

base64 image.jpg > image.txt

Nous obtenons un fichier texte légèrement plus volumineux qui une fois ouvert dans un éditeur de texte affiche ceci :

 

Il est tout de suite évident que ce fichier est bien plus lisible pour un humain que le fichier binaire, malgré qu’il ne nous dit pas grand-chose au premier coup d’oeil. Par contre, ce fichier peut maintenant être transmis par courriel et rendu au destinataire, il sera reconverti en fichier binaire. Si nous copions ce texte dans un fichier et exécutons la commande suivante:

base64 -d image.txt > image.jpg

Nous obtiendrons l’image originale.

3 réflexions au sujet de « Base 64 – Ce que c’est »

  1. Oui 🙂
    En mettant cet article en ligne, j’ai aussi vu que WordPress permettait d’insérer une image dans l’article sans l’avoir uploader. Il faisait comme tu as voulu montré: mettre la base64 comme source d’image. C’est quand même intéressant comme fonctionnalité des navigateurs.

Les commentaires sont fermés.