Codage de base

Les codages Common Base sont divisés en trois types : Base64, Base32 et Base16.

1. Encodage Base64

1. Contenu principal

Le codage Base64 utilise 64 caractères ASCII imprimables (AZ, az, 0-9, +, /) pour coder des données de séquence d'octets arbitraires dans une chaîne ASCII. Il existe également des symboles "=" utilisés comme suffixes.

Table d'encodage Base64
valeur numérique personnage valeur numérique personnage valeur numérique personnage valeur numérique personnage
0 UN 16 Q 32 g 48 w
1 B 17 R. 33 h 49 X
2 C 18 S 34 je 50 oui
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 je 53 1
6 g 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 je 24 Oui 40 o 56 4
9 J. 25 Z 41 p 57 5
dix K 26 un 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 Ô 30 e 46 toi 62 +
15 P. 31 F 47 v 63 /

On constate que Base64 est une méthode de codage et de décodage basée sur 64 caractères imprimables pour représenter des données binaires. Parce qu'il s'agit d'un câble codé, son rôle principal n'est pas d'assurer la sécurité, mais de permettre une transmission de contenu sans erreur entre différentes passerelles.

2. Principe de mise en œuvre :

Convertissez trois octets en quatre octets (3 * 8 = 4 * 6)

Puisque 64 est égal à 2 élevé à la puissance 6, un caractère Base64 représente en réalité 6 bits binaires (bits).
Cependant, 1 octet de données binaires correspond à 8 bits. Par conséquent, 3 octets (3 x 8 = 24 bits) de données chaîne/binaires peuvent être convertis en exactement 4 caractères Base64 (4 x 6 = 24 bits).
Pourquoi est-ce un groupe de 3 octets ? Étant donné que le plus petit commun multiple de 6 et 8 est 24, 24 bits correspondent exactement à 3 octets.

         exemple:

original w un n
Code ASCII 119 97 110
Bit binaire 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
6 bits divisés 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
achèvement élevé 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0
Encodage Base64 d 2 F toi
 则 'wan' base64 编码后为: d2Fu

Mais que se passe-t-il si le nombre d’octets convertis n’est pas un multiple de 24 ?

Lors de la conversion de huit bits en six bits, il peut rester deux ou quatre bits. À ce stade, si vous continuez à ajouter des 0 pour constituer huit bits, des bits supplémentaires apparaîtront lors du décodage. Ainsi, afin de résoudre ce problème, base64 a introduit ' = ', et un ' = ' représente six bits binaires 0. Lorsque deux 0 sont ajoutés, un est ajouté = pour constituer 8 bits ; lorsque quatre zéros sont ajoutés, deux zéros sont ajoutés = et 16 bits sont transformés en un multiple de 8. Lors du décodage, les deux 0 ajoutés à la fin et un "=" s'annulent pour représenter un caractère nul, ce qui n'affecte pas le décodage normal.

La raison pour laquelle il s'agit d'un multiple de 8 est que la base64 est principalement utilisée pour la transmission de données cryptées et que la plus petite unité de transmission est considérée comme étant des octets, donc le nombre total de chiffres est un multiple de 8.

Ensuite : pour chaque deux 0 qui doivent être ajoutés à la fin, le texte chiffré doit être ajouté avec un = annulation. Et il y aura au plus deux signes =.

        exemple: 

original S B
Code ASCII 83 66
Bit binaire 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0
Segmentation-Achèvement 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0
achèvement élevé 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0
Encodage Base32 U 0 je
则 'SB' base32 编码后为:U0I=

 3. Principe de stéganographie Base64

Lors du décodage en base64, s'il y a un espace réservé =, le = à la fin sera annulé en ajoutant 0 à la fin pour produire un caractère nul, donc la lecture du texte original ne sera pas affectée. Ensuite, en modifiant les bits de complétion à la fin, l'affichage du texte codé en base64 sera modifié, mais le contenu du texte original décodé ne sera pas modifié.

Alors, comment déterminer si un texte codé en base64 utilise la stéganographie ?

1. Nous pouvons décoder l’encodage pour voir s’il est complété par des 0 à la fin.

2. Nous pouvons utiliser l'outil d'encodage base64 pour décoder, puis encoder et comparer le texte codé pour déterminer s'il est cohérent. S’ils sont incohérents, il existe une stéganographie base64.

4. Caractéristiques

  • Convertissez les données binaires en chaîne (code ASCII) pour faciliter la transmission des données.

  • Le navigateur peut afficher directement les images codées en Base64 pour réduire les requêtes.

  • Les données codées seront au moins un tiers plus volumineuses, ce qui nécessitera des méthodes supplémentaires pour gérer le codage et le décodage.

2. Encodage Base32

Le principe de codage est le même que celui de base64, mais Base32 utilise 32 caractères imprimables en codage ASCII (les lettres majuscules AZ et le chiffre 27) pour coder n'importe quelle donnée d'octet. Base32 divise les données binaires enchaînées en 5 bits binaires. Un groupe, puisque l'unité de les données transmises sont des octets (c'est-à-dire 8 bits binaires). Par conséquent, le nombre de chiffres binaires avant la division est un multiple de 40 (40 est le plus petit commun multiple de 5 et 8).

Table d'encodage Base32
valeur numérique personnage valeur numérique personnage valeur numérique personnage valeur numérique personnage
0 UN 8 je 16 Q 24 Oui
1 B 9 J. 17 R. 25 Z
2 C dix K 18 S 26 2
3 D 11 L 19 T 27 3
4 E 12 M 20 U 28 4
5 F 13 N 21 V 29 5
6 g 14 Ô 22 W 30 6
7 H 15 P. 23 X 31 7

Comment utiliser = rembourrage ?

1. Utilisez d'abord 0 pour terminer la fin de la segmentation, afin que le nombre de chiffres binaires une fois terminé puisse être divisé par 5. Autrement dit, vous pouvez obtenir la valeur complète codée en base32.

2. Puisqu'il y a plusieurs 0 supplémentaires après la fin, les 0 ajoutés à la fin doivent être éliminés lors du décodage, donc = l'annulation est toujours utilisée. Chaque = représente cinq chiffres binaires, et le 0 ajouté à la fin constitue le nombre de chiffres binaires qui peuvent être divisés de manière égale par 8. Le but est qu'il n'y aura pas de bits supplémentaires lorsque le codage base32 à cinq chiffres est converti en un code ASCII de huit bits pendant le décodage.

3. Pour ajouter différents nombres de 0 à la fin, il existe plusieurs situations :
        • La longueur (bit) de l'entrée est un multiple entier de 5 (peut également être compris comme 40), et aucun remplissage n'est requis.

        • Pour 1 bit supplémentaire, vous devez utiliser 4 0 pour le terminer à la fin, et 4 0 nécessitent quatre = annulation. Soit 8 % (4+4×5)==0 ;

        • Pour les 2 bits supplémentaires, 3 0 doivent être utilisés pour terminer la fin, et 3 0 en nécessitent un = annulation. Autrement dit, 8 % (3+1×5)==0 ;
        • Pour 3 bits supplémentaires, 2 0 doivent être utilisés pour terminer la fin, et 2 0 nécessitent six = annulation. Autrement dit, 8 % (2+6×5)==0 ;
        • Les 4 bits supplémentaires doivent être complétés par 1 0 à la fin, et 1 0 nécessite trois = annulation. Soit 8 % (1+3×5)==0 ;

        exemple:

original S B
Code ASCII 83 66
Bit binaire 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0
Segmentation-Achèvement 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0
Encodage Base32 K N B UN
则 'SB' base16 编码后为:KNBA====

3. Encodage Base16 

Le codage Base16 consiste à coder les données d'octets binaires correspondant aux caractères imprimables dans le jeu de caractères ASCII (chiffres 0 à 9 et lettres A à F). La méthode de codage est la suivante :

1. Convertissez les données (selon l'encodage ASCII, l'encodage UTF-8, etc.) en nombre binaire correspondant, et remplissez les bits de poids fort avec 0 s'il y a moins de 8 bits. Ensuite, enchaînez tous les nombres binaires ensemble, avec 4 bits binaires en groupe et convertissez-les en décimal correspondant.

2.根据十进制数值找到Base16编码表里面对应的字符.Base16是4个比特位表示一个字符,所以原始是1个字节(8个比特位)刚好可以分成两组,也就是说原先如果使用ASCII编码后的一个字符,现在转化成两个字符.数据量是原先的2倍.

Base16编码表
数值 字符 数值 字符
0 0 8 8
1 1 9 9
2 2 10 A
3 3 11 B
4 4 12 C
5 5 13 D
6 6 14 E
7 7 15 F

        例:

原文 S B
ASCII码 83 66
二进制位 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0
切分-补全 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0
Base16编码 5 3 4 2

Guess you like

Origin blog.csdn.net/qq_44905837/article/details/126960760