Base64原理
在使用base64库解码时,网络传输等收到的encode_str可能有问题,所以需要捕获异常,try catch decode函数。
Base64是一种用64个字符表示任意二进制数据的编码方法。其设计目的是在文本数据中存储、处理和传输二进制数据。它经常用于在不支持二进制数据的环境中转换二进制数据(例如,发送电子邮件),因为传统的文本协议(如SMTP)通常不支持原始的二进制数据。
Base64编码方法使用以下64个字符:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
=
),用于在最后一个编码块不足4个字符时填充。
0.1 Base64编码的步骤如下:¶
-
将二进制数据分成3个字节(24位)的块。如果数据的总长度不是3的倍数,那么在末尾添加足够的零位(padding)使其长度成为3的倍数。
-
将这24位数据分成4个6位的组。每个6位组现在可以看作是一个0到63之间的数值。
-
对应每个6位的数值,使用Base64字符集找到对应的字符。
-
如果原始二进制数据的长度不是3的倍数,那么在编码的结果中相应位置使用
=
字符进行填充,以保证Base64编码的总长度是4的倍数。
0.2 例子:¶
假设我们有以下ASCII字符串:“Man”,其二进制表示为:
'M' 'a' 'n'
01001101 01100001 01101110
按3个字节一组,我们有24位二进制数据:
`010011010110000101101110`
将这24位分成4组6位的二进制数:
010011 010110 000101 101110
将这些6位二进制数转换成十进制:
19 22 5 46
找到这些数值在Base64字符集中对应的字符:
T W F u
因此,”Man”经过Base64编码后变为:“TWFu”。
Base64编码是可逆的,也就是说,可以从Base64编码的字符串中恢复原始的二进制数据。解码过程实际上是编码过程的逆过程:将Base64字符串转换回二进制数据,然后再将二进制数据转换回原始格式。
Base64编码的输出比原始二进制数据大约增加了33%,因为每3个字节的数据被转换成了4个字节的Base64字符。这种空间开销是可接受的代价,以便能在只支持文本数据的系统中传输二进制数据。