base64编码

为什么要使用base64编码?

在Email的传送过程中,由于历史原因,Email只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)的Email通过有"历史问题"的网关时就可能会出现问题。网关可能会把最高位置为0!很明显,问题就这样产生了!因此,为了能够正常的传送Email,这个问题就必须考虑!也正是基于这些原因,产生了base64编码。

base64编码原理

base64把每三个8bit的字节转换为四个6bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8bit的字节,最后用一个码表来得到我们想要的字符串(也就是最终的Base64编码),可以看出,转换后的字符串理论上将要比原来的长1/3。

1)二个字节的情况:将这二个字节的一共16个二进制位,按照上面的规则,转成三组,最后一组除了前面加两个0以外,后面也要加两个0。这样得到一个三位的base64编码,再在末尾补上一个"="号。

2)一个字节的情况:将这一个字节的8个二进制位,按照上面的规则转成二组,最后一组除了前面加二个0以外,后面再加4个0。这样得到一个二位的base64编码,再在末尾补上两个"="号。

例如:
Man 转换后为 TWFu;
Ma 转换后为 TWE=;
M 转换后为 TQ==;

base64码表

0-25对应A-Z;
26-51对应a-z;
52-61对应0-9;
62对应+;
63对应/;

评论: 0 | 引用: 0 | 查看次数: 3617
发表评论
登录后再发表评论!