×

BASE64编码算法

96
CayChan
2017.12.26 00:12 字数 567

简单来说,就是用6 bit代替原来的8 bit(一个字节)。

对"Man"编码为"TWFu":

BASE64_1.png

ASCII码

标准ASCII码从0~127共128个字符。

其中0~31、127这33个字符称为控制字符。如0为NUL,表示空字符;1为SOH,表示标题开始等。

其余95个称为可打印字符。48为0,也就是数字0;65表示A,也就是大写字母A等。

BASE64

早期的一些传输协议只能传输可打印的ASCII码,但一个字节(8个bit)的可表示范围为0~255共256种,如果一个Byte的值超过127,那么就无法用ASCII码表示了。

此时BASE64应运而生。

BASE64算法只支持64个可打印字符。包含大写字母A~Z,小写字母a~z0~9共62个,另外两个字符在不同的系统中有所区别,标准BASE64编码中为+/

因为一共只有64种字符,所以用6 bit足以表示所有的BASE64字符。

编码

BASE64用6 bit可以表示了原本的8 bit字符。但怎么用6 bit表示8 bit呢?增加字符的数量。6和8的最小公倍数是24,3 * 8 = 4 * 6。这样原来的3个字节可以用4个BASE64字符表示。也就是原来的3组拆成了4组来表示,每组转换成十进制,每个十进制对应一个BASE64字符。

将原来的3个Byte写成24 bit,按照高位到低位每6位组成一个BASE64字符,不足24位时末位补0。当没有匹配的8 bit字符的时候,用=填充。

对"M"编码结果为"TQ==":

BASE64_2.png

解码

与编码相反,只需要将对应4组6 bit分隔成3组8 bit,每组8 bit再表示成ASCII字符即可。

因此,BASE64算法只是一种编码算法,不能用于加密。

Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。

常见算法
Web note ad 1