1. Règles d'encodage Base64
L'idée de l'encodage Base64 est d'utiliser 64 caractères de code ASCII de base pour ré-encoder les données. Il divise les données qui doivent être codées dans un tableau d'octets. Par groupes de 3 octets. Organisez les données 24 bits dans l'ordre, puis divisez les données 24 bits en 4 groupes, soit 6 bits dans chaque groupe. Ajoutez ensuite deux 0 avant le bit le plus élevé de chaque groupe pour constituer un octet. Cela réencode un groupe de données de 3 octets en 4 octets. Lorsque le nombre d'octets de données à coder n'est pas un multiple entier de 3, c'est-à-dire que le dernier groupe ne suffit pas de 3 octets lors du regroupement. A ce moment, 1 à 2 0 octets sont remplis dans le dernier groupe. Et ajoutez 1 à 2 "=" à la fin une fois l'encodage final terminé.
Exemple : Encodage BASE64 de ABC :
1 Obtenez d'abord la valeur du code ASCII correspondant à ABC. A (65) B (66) C (67);
2. Prenez ensuite la valeur binaire A (01000001) B (01000010) C (01000011)
3. Connectez-le ensemble (010000010100001001000011) ;
4. Divisez-le en 4 blocs de données en unités de 6 bits et remplissez le bit le plus élevé avec deux 0 pour former une valeur codée sur 4 octets, (00010000) (00010100) ( 00001001) (00000011), la partie bleue correspond aux données réelles ;
5. Convertissez ensuite ces quatre octets de données en nombres décimaux pour obtenir (16) (20) (9) (3). Aux 64 tables de caractères de base données par BASE64, recherchez les caractères du code ASCII correspondants (Q) (U) (J) (D). La valeur ici est en fait l'index des données dans la table de caractères.
Remarque : table de caractères BASE64 : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /
2. Règles de décodage
Le processus de décodage consiste à restaurer 4 octets en 3 octets, puis à convertir les mots selon différentes formes de données. le tableau est réorganisé en données.
3. Implémentation en C#
byte[] bytes = Encoding.Default.GetBytes("helloworld"); string str = Convert.ToBase64String(bytes); Console.WriteLine(str); Console.ReadLine(); //base 64 decode bytes = Convert.FromBase64String(str); Console.WriteLine(Encoding.Default.GetString(bytes)); Console.ReadLine();