Base64的由来
我们知道,基础的ASCII码是用一个字节的低7位来表示英文的0-127个字符。
在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。对于扩展ASCII码(128 -255),不同国家之间也不相同,Email只被允许传送ASCII字符,即一个8位字节的低7位,传统的邮件只支持可见字符的传送,像ASCII码的32个控制字符就不能通过邮件传送。直到1990年代初,许多程序和数据传输通道都假定所有字符都将表示为0到127(7位)之间的数字。
于是,Base64为了满足电子邮件中不能直接使用非ASCII码字符的规定,将8位2进制转为6位2进制重新编码。6位2进制可以表示64个不同的可见字符,Base64的名字由此得来。
这里也许会有人问,为什么是将8位转成6位,而不直接转为7位编码呢。在标准7位ASCII码中,前0-31个是控制字符,是不能通过邮件传输的,所以转成6位编码是比较合适的。当然在base家族中,有base64,base32,base16,base8等等。
Base64的算法原理
Base64不是加密算法,而是一种编码格式。它把3个8位字节(3x8=24)转化为4个6位的字节(4x6=24),之后在每个6位的前面补两个0,形成8位,即一个字节。
-
Base64编码表
A-Z 26
a-z 26
0-9 10
+/ 2
= 一般加在编码末尾,表示补了多少个字节
示例
将“我W”使用base64编码。