我想知道BouncyCastle提供的Base64编码机制和Apache Commons Codec提供的等效机制是否完全兼容,或者是否存在兼容性问题。
我正在开发一个Java库,它在一些输入和输出上使用Base64编码(它必须对一些输入进行编码,并对其部分输出进行编码)。该库使用Bouncy Castle的Base64编码器。
将使用此库的其中一个应用程序将使用Apache commons的Base64编码器来执行编码和解码。
我认为Apache的实现遵循RTC标准,但是Bouncy Castle的实现并不遵循这个标准,尽管它基本上遵循相同的标准。这些组件之间是否存在兼容性问题?
仅在需要相互通信的组件中使用相同的Base64编码器是明智的吗?
答案 0 :(得分:3)
仅在组件中使用相同的Base64编码器是明智的吗? 那需要彼此沟通?
简而言之:是,两个通信组件中的Base64应相同。
<强>释强>:
Base64
内容传输编码是任何8-bit
字节序列组合的描述形式,此形式无法直接识别。该算法主要给出字符编码(如ASCII码,UTF-8码)对应的十进制数作为参考,做编码操作。
由于Sun本身不提供Base64
算法,因此用户必须使用其中一个开源实现,例如Commons Codec
,Bouncy Castle
等。
Bouncy Castle
&amp;的算法之间的差异Apache Commons
Bouncy Castle
将hash
解释为一系列 hexadecimal
值,而Apache Commons
将hash
解释为string
在base64编码之前 shorter
。在前一种情况下,结果编码比原始字符串longer
,而在后一种情况下,结果编码比原始字符串{{1}}。
因此,在通信组件之间应该使用相同的 Base64编码器。
希望这会对你有所帮助。