Comment fonctionne l'encodage Base64

Table des matières:

Comment fonctionne l'encodage Base64
Comment fonctionne l'encodage Base64
Anonim

L'encodage Base64 est un processus de conversion de données binaires en un format de chaîne ASCII en convertissant ces données binaires 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 sur des systèmes conçus pour transmettre des données au format texte brut (ASCII).

Pourquoi l'encodage Base64 est-il utilisé ?

Le besoin d'encodage Base64 vient des problèmes qui surviennent lorsque les médias sont transmis au format binaire brut vers des systèmes textuels.

Étant donné que les systèmes textuels (comme les e-mails) interprètent les données binaires comme un large éventail de caractères, y compris des caractères de commande spéciaux, une grande partie des données binaires transmises aux supports de transfert sont mal interprétées par ces systèmes et perdues ou corrompues dans le processus de transmission.

Image
Image

Une méthode pour coder ce type de données binaires de manière à éviter 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 employées par la norme MIME pour envoyer des données autres que du texte 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

L'encodage Base64 décompose les données binaires en segments de 6 bits de 3 octets complets et les représente sous forme de caractères imprimables dans la norme ASCII. Il le fait essentiellement en deux étapes.

La première étape consiste à décomposer la chaîne binaire en blocs de 6 bits. Base64 n'utilise que 6 bits (correspondant à 2^6=64 caractères) pour garantir que les données encodées sont imprimables et lisibles par l'homme. Aucun des caractères spéciaux disponibles en ASCII n'est utilisé.

Les 64 caractères (d'où le nom Base64) sont 10 chiffres, 26 caractères minuscules, 26 caractères majuscules ainsi que le signe Plus (+) et la barre oblique (/). Il existe également un 65ème caractère appelé pad, qui est le signe égal (=). Ce caractère est utilisé lorsque le dernier segment de données binaires ne contient pas 6 bits complets.

Exemple d'encodage Base64

Par exemple, prenons trois nombres ASCII 155, 162 et 233. Ces trois nombres constituent un flux binaire de 100110111010001011101001. Un fichier binaire, comme une image, contient un flux binaire s'exécutant sur des dizaines ou des centaines de milliers de zéros et ceux.

Un encodeur Base64 commence par fragmenter 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 son carré positionnel. En partant de la droite et en allant vers la gauche, et en commençant par 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. En partant de la gauche, chaque position vaut 1, 2, 4, 8, 16 et 32. Si le nombre binaire a un 1 dans l'emplacement, vous ajoutez cette valeur; s'il a un 0 dans la fente, vous ne le faites pas. La chaîne binaire 100110 est convertie en nombre décimal 38: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^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, ces nombres sont convertis en caractères ASCII à l'aide de la table d'encodage Base64. Les valeurs 6 bits de cet exemple se traduisent par la séquence ASCII m6Lp.

Utilisation de la table de conversion Base64:

  • 38 est m
  • 58 vaut 6
  • 11 est L
  • 41 est p

Ce processus en deux étapes est appliqué à toute la chaîne binaire encodée.

Pour s'assurer que les données encodées peuvent être correctement imprimées et ne dépassent pas la limite de longueur de ligne d'un serveur de messagerie, des caractères de saut de ligne sont insérés pour maintenir les longueurs de ligne en dessous de 76 caractères. Les caractères de retour à la ligne sont encodés comme toutes les autres données.

L'objectif de l'encodage Base64, de l'ajout de remplissage pour préserver les segments binaires de 3 octets à la conversion du binaire en texte à l'aide de la table Base64, est de préserver l'intégrité des informations binaires transmises.

Table d'encodage Base64

Le tableau suivant traduit les 64 caractères utilisés dans l'encodage Base64.

Table d'encodage Base64
Valeur Char Valeur Char Valeur Char Valeur Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 55 3
8 je 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Résoudre la fin de partie

À la fin du processus d'encodage, il peut y avoir un problème. Si la taille des données d'origine en octets est un multiple de trois, tout fonctionne correctement. Si ce n'est pas le cas, il peut y avoir des octets vides. Pour un encodage correct, exactement 3 octets de données binaires sont nécessaires.

La solution consiste à ajouter suffisamment d'octets avec une valeur de 0 pour créer un groupe de 3 octets. Deux de ces valeurs sont ajoutées si les données nécessitent un octet supplémentaire de données, une est ajoutée pour deux octets supplémentaires.

Bien sûr, ces '0' artificiels ne peuvent pas être encodés à l'aide du tableau d'encodage ci-dessous. Ils doivent être représentés par un 65e caractère. Le caractère de remplissage Base64 est le signe égal (=) et est placé à la fin des données codées.

Conseillé: