base64 编码原理

base64 编码原理

Base64 编码是网络上最常见的用于传输8Bit字节码的编码方式之一,它是基于64个可打印字符来表示二进制数据的方法。

Base64 编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息,并且采用Base64 编码具有不可读性,需要解码后才能阅读。

编码前的字符为8位的ASCII编码,而编码后则为6位,其中包含的字符为:A-Z、a-z、0-9、+、/。共64个字符:26 + 26 + 10 + 1 + 1 = 64。【注:其实是65个字符,“=”是填充字符】

ASCII码对照表

base64码对照表

原理:

  把每三个8Bit的字节转换为四个6Bit的字节

比如长度为3个字节的数据,数据位数为3*8=24位,base编码后为24 / 6 = 4字节。

长度为4个字节的数据,需添加2个0值字节,变为6个字节,数据位数为6*8 = 48位,base编码后为48 / 6 = 8字节,其中最后两位为 ” = “(见下方示例)。

长度为5个字节的数据,需添加1个0值字节,变为6个字节,数据位数为6*8 = 48位,base编码后为48 / 6 = 8字节,其中最后一位为 ” = ” (见下方示例)。


例:字符串“Xue”经过Base64编码后变为“WHVl”

   "X" 对应的ASCII为 0101 1000
   "u" 对应的ASCII为 0111 0101
   "e" 对应的ASCII为 0110 0101

这里写图片描述

如果数据的字节数不是3的倍数,则其位数就不是6的倍数。因为6和8的最小公倍数为24,折合成字节数即为3。

故转化前的数据字节数必须为3的倍数,如果不够则补1个或2个零值字节,即补8个0或16个0。
转化时,会从末尾起,每隔6位全0的转化为”=”。

例:字符串“Xu”经过Base64编码后变为“WHU=”

这里写图片描述

例:字符串“X”经过Base64编码后变为“WA==”

这里写图片描述

猜你喜欢

转载自blog.csdn.net/huazhiliandong/article/details/82699395