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