内容: 记录一种用于以8bit为单位的二进制编码方法
base64编码的原理:
1. Base64就是基于64个可打印字符来表示二进制数据
2. 编码的规则:
* 把3个字节变成4个字节(3*8 = 4*6 = 24)
* 每76个字符加一个换行符
* 每个计算单位由原来的8位变成6位,所以还要在每组前面加两个0
* 原文的字节数量应该是3的倍数,如果这个条件不能满足的话:
原文剩余的字节根据编码规则继续单独转(1变2,2变3;不够的位数用0补全),再用=号补满4个字节。
这就是为什么有些Base64编码会以一个或两个等号结束的原因,但等号最多只有两个。因为一个原字
节至少会变成两个目标字节,所以余数任何情况下都只可能是0,1,2这三个数中的一个。如果余数是
0的话,就表示原文字节数正好是3的倍数(最理想的情况)。如果是1的话,转成2个Base64编码字符
,为了让Base64编码是4的倍数,就要补2个等号;同理,如果是2的话,就要补1个等号。
3.转换表:
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w
15 P 32 g 49 x
16 Q 33 h 50 y
base64意义:
1.base64编码不是一种加密方法,是一种编码方法
2.将二进制流转变成可用ascii可见符号来表示的流
3.将原来可见的字符串流变成不可直接解读的字符串流
4.由于某些系统中只能使用ASCII字符。Base64可用来将非ASCII字符的数据转换成ASCII字符
大四学生一枚,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。有喜欢C/C++,linux的同学欢迎私信一起讨论学习。