您的位置:首页 > 编程语言 > Java开发

Java加密与解密的艺术-Base64

2015-08-27 14:56 561 查看
Base64是一种基于64个字符的编码算法,经过Base64编码后的数据会比原始数据略长,为原来的4/3倍。

Bouncy Castle与Commons Codec有差别:Bouncy Castle使用”.”作为补位符,而Commons Codec则完全杜绝使用补位符。

尽管如此,Base64仍不能被称为加密算法。Base64算法公开,这一点与柯克霍夫原则并无违背,但充当密钥的字符映射表公开,直接违反了柯克霍夫原则,而且Base64的加密强度并不够高。因此不能讲Base64看做我们认可的现代加密算法。

Base64算法常作为密钥、密文和证书的一种通用存储编码格式,与加密算法形影不离。

Url Base64算法定义有别于RFC 2045,它不需要定义每行字符数及行末回车换行符。符号”+”和符号”/”是不允许出现在URL中的,RFC 4648中给出了相应的替代符号”-“和”_”。同样,符号”=”用作参数分隔符,也不允许出现在URL中。符号”=”在Base64算法中用作填充符。

Commons Codec的Url Base64算法实现遵循了RFC 4648绝大部分定义,为避免可能的错误,使用不定长Base64编码,抛弃了填充符。

不论是通过HTTP的GET方式以URL作为参数传递数据还是通过POST方式以数据体传输数据,都能发现Base64编码藏匿其中。

如甲方向乙方发送密钥,可以将密钥以二进制形式转换为Base64编码后的字符串形式,通过安全途径以文档形式发送给乙方,密钥很可能被要求写在合同中。

数字证书Base64编码形式。它遵循RFC 2045对电子邮件的Base64编码格式要求,每间隔76个字符添加一个回车换行符。在HTTP网络中,数字证书就是以这种编码形式传输的。

代码参见github:

https://github.com/DISSIDIA-986/EncDecAboutJava
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: