Qu'est-ce que Base64?
Base64 est une méthode permettant de convertir des données binaires arbitraires (données composées de plus que des caractères de texte brut) en un message en texte brut pouvant ensuite être transféré sur un réseau informatique. C'est ce qu'on appelle un encodage. Bien que la sortie d’un message codé en base64 ne soit pas facile à comprendre par un être humain, elle contient toujours 64 caractères anglais courants, c’est l’origine du nom, ainsi qu’un 65ème caractère supplémentaire utilisé à des fins spéciales.
L'idée de base64 est née de la nécessité d'obtenir plus que de simples caractères textuels via des communications en réseau telles que le courrier électronique. Les premiers courriers électroniques ont commencé par être des caractères encodés dans le code ASCII (American Standard Code), méthode d'encodage utilisée sur les ordinateurs pour représenter les caractères alphabétiques de langue anglaise sous forme de texte sur des écrans ou des imprimantes. Comme informations binaires supplémentaires nécessaires pour passer à travers, de nouveaux schémas de codage ont été développés.
La méthode de codage base64 a été décrite pour la première fois dans la norme MIME (Multipurpose Internet Mail Extensions). Les méthodes définies par le standard MIME selon lesquelles d’autres caractères non codés en ASCII, tels que les alphabets utilisés dans des langues autres que l’anglais, ainsi que d’autres données binaires arbitraires pouvaient également être codées en séquences ASCII et transmises par courrier électronique. Parmi les deux principaux moyens d’encodage décrits par le standard MIME, base64 partage ce rôle avec un autre outil appelé quoted-printable. Alors que la méthode entre guillemets et imprimables est capable d'étendre l'ASCII un peu au-delà de ses 94 caractères imprimables limités, base64 peut prendre n'importe quelle séquence d'octets et la convertir en une séquence ASCII.
Base64 doit prendre des chaînes de données qui ne seraient pas conformes à la norme ASCII et les convertir en ASCII. Pour ce faire, la méthode de codage consiste à rassembler les données en groupes de trois octets et à les convertir en quatre chiffres représentant les caractères ASCII correspondants. Comme un octet est composé de huit bits, chaque bit étant représenté par un ou zéro, trois octets sont liés bout à bout et la séquence entière passe dans une mémoire tampon de 24 bits. Les 24 unités et zéros sont ensuite divisés en quatre groupes de six bits, auxquels sont ensuite attribués des numéros correspondant à un caractère ASCII.
Puisque base64 est capable de coder toutes les données binaires, toute séquence d'octets peut passer par le processus. Il y a toutefois un problème dans les cas où le nombre d'octets à coder n'est pas divisible par trois, de sorte que les bits puissent entrer dans la mémoire tampon. Si une séquence d'octets contient, par exemple, quatre ou cinq octets, il faut encore quelque chose pour remplir la mémoire tampon et constituer les 24 bits complets. Dans ces cas, chaque octet manquant est représenté par huit 0 et est ensuite converti en caractères de remplissage dans le codage terminé. C'est de là que vient le 65ème caractère mentionné précédemment, représenté dans le message codé par un signe égal (=); il n'apparaît jamais qu'à la fin d'un encodage si un remplissage est nécessaire.
Bien que base64 ait été conçu à l’origine pour la transmission de données binaires via des messages électroniques, son utilisation est entrée en jeu dans un certain nombre de domaines autres que MIME. Une telle utilisation assez courante est que les bases de données et les applications Web codent des données pour la création d’un localisateur de ressources uniforme (URL) sur un formulaire Web. Le langage de balisage extensible (XML) utilise également une variante permettant d’inclure des données binaires, telles que de petites images, dans des documents XML. Il existe d'autres variantes pour les méthodes de cryptage et d'autres techniques liées à la sécurité, telles que le masquage de mots de passe.