首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

【基础】BASE64小常识

2012-12-28 
【基础】BASE64小知识总是听到BASE64,其实对它并不了解。此文记录一些BASE64的基本概念。?1. BASE64是加密?不,

【基础】BASE64小知识

总是听到BASE64,其实对它并不了解。此文记录一些BASE64的基本概念。

?

1. BASE64是加密?

不,虽然有"加密"后不是明文,但逆编码的规则明确,所以“防君子不防小人”,只是没办法一眼看出内容罢了。它是一种"编码"。

?

2. BASE64的大概算法:?

把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。——所以编码后大概会多出1/3的长度

?

3. BASE64编码没有安全的加密效果,发明这个编码来使消息长度多出1/3,这不是画蛇添足么?

不是的。这得看BASE64的来源。在Email的传送过程中,由于历史原因,Email只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)的Email通过有“历史问题”的网关时就可能会出现问题。网关可能会把最高位置为0!那邮件内容不就变了。结合BASE64的算法,就可以看出BASE64绕过了最高位变成0的问题。

?

4.传说中比JDK原生BASE64算法实现要好的开源JAVA实现(好绕口):

http://migbase64.sourceforge.net/

?

5.相关资料:

http://www.5dmail.net/html/2004-1-30/200413084348.htm? ?上面的内容就是从里面摘录出来的

http://zttcn.iteye.com/blog/153766? ?上面第3点提到的非ASCII字符有8位的问题,这篇文章里列举了具体的各种字符集的位数,比如咱常见的ISO-8859-1字符集,就是8位的咯

?

热点排行