Fonctionnement de l’encodage Base64
Le codage Base64 est le processus de conversion des données binaires au format de chaîne ASCII en les convertissant en une représentation de caractères 6 bits. La méthode de codage Base64 est utilisée lorsque des données binaires, telles que des images ou des vidéos, sont transmises via un système conçu pour transmettre des données au format texte brut (ASCII).
Pourquoi utiliser l’encodage Base64 ?
Le besoin d’encodage Base64 découle des problèmes qui surviennent lorsque le média est transporté au format binaire brut vers des systèmes textuels.
Étant donné que les systèmes textuels tels que le courrier électronique interprètent les données binaires comme une large gamme de caractères, y compris des caractères de commande spéciaux, une grande partie des données binaires transmises aux supports de transmission sont mal interprétées par ces systèmes et perdues ou corrompues en transit.
Wutthichai Luemuang/EyeEm/Getty Images
Une façon de coder ces données binaires d’une manière qui évite de tels problèmes de transmission consiste à les envoyer sous forme de texte ASCII brut au format codé Base64. C’est l’une des techniques utilisées par la norme MIME pour envoyer des données en texte non brut.
De nombreux langages de programmation, tels que PHP et Javascript, incluent des fonctions d’encodage et de décodage Base64 afin d’interpréter les données transmises à l’aide de l’encodage Base64.
Logique d’encodage Base64
Le codage Base64 divise les données binaires en segments de 6 bits de 3 octets complets et représente ces segments sous forme de caractères imprimables dans la norme ASCII. Cela se fait essentiellement en deux étapes.
La première étape consiste à diviser la chaîne binaire en morceaux de 6 bits. Base64 utilise seulement 6 bits (correspondant à 2^6 = 64 caractères) pour s’assurer que les données encodées sont imprimables et lisibles par l’homme. Les caractères spéciaux disponibles en ASCII ne sont pas utilisés.
64 caractères (d’où le nom Base64) sont 10 chiffres, 26 caractères minuscules, 26 caractères majuscules, plus un signe plus (+) et une barre oblique (/).Il y a aussi un 65e caractère appelé tapissé, le signe égal (=). Ce caractère est utilisé lorsque le dernier segment de données binaires ne contient pas les 6 bits complets.
Exemple d’encodage Base64
Par exemple, prenez les trois nombres ASCII 155, 162 et 233. Ces trois nombres constituent le flux binaire de 100110111010001011101001. Les fichiers binaires sont comme des images, contenant des flux binaires exécutant des dizaines ou des centaines de milliers de 0 et de 1.
L’encodeur Base64 divise d’abord le flux binaire en groupes de six caractères : 100110 111010 001011 101001. Chacun de ces groupes se traduit par les nombres 38, 58, 11 et 41.
Un flux binaire à six caractères convertit les caractères binaires (ou base 2) en caractères décimaux (base 10) en élevant au carré chaque valeur représentée par un 1 dans la séquence binaire avec le carré de sa position. En se déplaçant de droite à gauche, en partant de zéro, les valeurs du flux binaire représentent 2^0, puis 2^1, puis 2^2, puis 2^3, puis 2^4, puis 2^5.
Voici une autre façon de voir les choses. À partir de la gauche, les valeurs pour chaque position sont 1, 2, 4, 8, 16 et 32. Si le binaire a un 1 dans l’emplacement, ajoutez la valeur ; si l’emplacement a un 0, ce n’est pas le cas. La chaîne binaire 100110 est convertie en décimal 38 : 0*2^01 + 1*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5 = 0+2 + 4+0+0+32.
L’encodage Base64 prend cette chaîne binaire et la décompose en valeurs 6 bits 38, 58, 11 et 41.
Enfin, convertissez ces nombres en caractères ASCII à l’aide de la table d’encodage Base64.La valeur 6 bits de cet exemple est convertie en une séquence ASCII m6Lp.
Utilisez la table de conversion Base64 :
- 38 est mètres
- 58 est 6
- 11 est L
- 41 est p
Ce processus en deux étapes s’applique à toute la chaîne binaire qui a été encodée.
Pour vous assurer que les données codées s’impriment correctement et ne dépassent pas la limite de longueur de ligne du serveur de messagerie, insérez des retours à la ligne pour maintenir la longueur de ligne en dessous de 76 caractères. Les retours à la ligne sont encodés comme toutes les autres données.
L’objectif de l’encodage Base64, de l’ajout de rembourrage pour préserver le segment binaire de 3 octets à la conversion du binaire en texte à l’aide d’une table Base64, est de préserver l’intégrité des informations binaires transmises.
Tableau d’encodage Base64
Le tableau suivant traduit les 64 caractères utilisés dans l’encodage Base64.
Tableau d’encodage Base64 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
évaluer | personnage | évaluer | personnage | évaluer | personnage | évaluer | personnage | |||
0 | Une sorte de | 16 | interroger | 32 | g | 48 | w | |||
1 | Seconde | 17 | R | 33 | H | 49 | X | |||
2 | C | 18 | petit | 34 | Une génération | 50 | Oui | |||
3 | ré | 19 | Tonne | 35 | j | 51 | z | |||
4 | Seconde | 20 | tu | 36 | K | 52 | 0 | |||
5 | F | vingt-et-un | Cinq | 37 | je | 53 | 1 | |||
6 | g | vingt-deux | O | 38 | Mètre | 54 | 2 | |||
7 | H | vingt trois | X | 39 | n | 55 | 3 | |||
8 | Une génération | vingt quatre | Oui | 40 | ○ | 56 | 4 | |||
9 | J | 25 | Z | 41 | p | 57 | 5 | |||
dix | K | 26 | Une sorte de | 42 | q | 58 | 6 | |||
11 | grande | 27 | b | 43 | r | 59 | 7 | |||
12 | Mètre | 28 | C | 44 | s | 60 | 8 | |||
13 | n | 29 | ré | 45 | Tonne | 61 | 9 | |||
14 | ○ | 30 | e | 46 | toi | 62 | + | |||
15 | phosphore | 31 | F | 47 | v | 63 | / |
Résoudre la fin de partie
À la fin du processus d’encodage, des problèmes peuvent survenir. Si la taille des données d’origine (en octets) est un multiple de trois, tout fonctionne correctement. Sinon, il peut y avoir des octets nuls. Exactement 3 octets de données binaires sont nécessaires pour un encodage correct.
La solution consiste à ajouter suffisamment d’octets avec une valeur de 0 pour créer un groupe de 3 octets. Si les données nécessitent un octet de données supplémentaire, ajoutez deux valeurs de ce type, une avec deux octets supplémentaires.
Bien entendu, ces ‘0’ artificiels ne peuvent pas être encodés à l’aide du tableau d’encodage ci-dessous. Ils doivent être représentés par le 65e caractère. Le caractère de remplissage Base64 est le signe égal (=) à la fin des données codées.
Merci de nous en informer!
Dites-nous pourquoi !
D’autres détails ne sont pas assez difficiles à comprendre