`

【基础】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位的咯

 

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics