3

我想了解一下 BouncyCastle 提供的 Base64 编码机制和 Apache Commons Codec 提供的等效机制是否完全兼容,或者是否存在兼容性问题。

我正在开发一个 Java 库,它在一些输入和输出上使用 Base64 编码(它必须对一些输入进行编码,并对它的一些输出进行编码)。这个库使用来自 Bouncy Castle 的 Base64 编码器。

将使用此库的应用程序之一将使用来自 Apache commons 的 Base64 编码器在其一侧执行编码和解码。

我相信 Apache 的实现遵循 RTC 标准,但是 Bouncy Castle 的实现并不遵循这个标准,尽管它在很大程度上遵循相同的标准。这个组件之间会不会有兼容性问题?

仅在需要相互通信的组件中使用相同的 Base64 编码器是否明智?

4

1 回答 1

4

仅在需要相互通信的组件中使用相同的 Base64 编码器是否明智?

简而言之的,两个通信组件中的 Base64 应该相同

说明

Base64内容传输编码是一种描述任意8-bit字节序列组合的形式,这种形式不容易被直接识别。该算法主要是给出字符对字符的编码(如ASCII码、UTF-8码)对应的十进制数作为参考,做编码操作。

由于 Sun 本身不提供Base64实现的算法,因此用户必须使用其中一种开源实现,例如Commons Codec,Bouncy Castle等。

Bouncy Castle&的算法之间的区别在于Apache CommonsBouncy Castle解释hash为一系列hexadecimal值,而Apache Commons解释为与base64 编码之前的hasha相同。string在前一种情况下,结果编码shorter比原始字符串,而在后一种情况下,结果编码longer比原始字符串。

因此,通信组件之间应该使用相同的 Base64 编码器。

希望这对您有所帮助。

于 2014-08-13T06:51:43.377 回答