gpt4 book ai didi

java - Apache Commons Codec Base64 是 sun.misc.BASE64 的替代品吗?

转载 作者:行者123 更新时间:2023-12-04 09:59:17 24 4
gpt4 key购买 nike

背景

这是我原来的问题 Migrating from sun.misc.BASE64 to Java 8 java.util.Base64 的后续问题因为 someone suggested Apache Commons Codec Base64 API 是迁移使用 sun.misc 的代码的替代品Base64 API。

问题

org.apache.commons.codec.binary.Base64 替代品 对于不受支持的内部 Java API sun.misc.BASE64Encodersun.misc.BASE64Decoder ?

直接更换 意味着来自两种实现(Apache Commons Codec 和 sun.misc)的编码/解码结果是相同的,因此它们可以互换使用。

最佳答案

Stuart Marks perfect counter-example answer到我的 original question明确表明,对于至少一种边缘情况,Java 8 java.util.Base64 MIME 编码器提供与不受支持的内部 Java API 不同的结果 sun.misc.BASE64Encoder .

因此,让我们使用 Apache Commons Codec library 再次检查边缘情况。 .

边缘情况测试

对于以下测试,我使用 sun.misc.BASE64Encoder OpenJDK 7 和 Apache Commons Codec 库 1.14 的实现。

public class StuartMarksBase64EncodingEdgeCaseTestForApacheCommonsCodec {

public static void main(String[] args) {
byte[] bytes = new byte[57];
String enc1 = new sun_misc_jdk7.BASE64Encoder().encode(bytes);
String enc2 = new String(org.apache.commons.codec.binary.Base64.encodeBase64(bytes));

System.out.println("enc1 = <" + enc1 + ">");
System.out.println("enc2 = <" + enc2 + ">");
System.out.println(enc1.equals(enc2));
}

}

这将导致输出
enc1 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>
enc2 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>
false

结论

鉴于测试输出,我得出结论,Apache Commons Codec Base64 API 是 不是直接替代品 迁移使用 sun.misc 的代码Base64 API。

关于java - Apache Commons Codec Base64 是 sun.misc.BASE64 的替代品吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61863542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com