Java Apache Commons编解码器Base64是sun.misc.Base64的替代品吗?

Java Apache Commons编解码器Base64是sun.misc.Base64的替代品吗?,java,base64,encoder,Java,Base64,Encoder,背景 这是我原来问题的后续问题,因为Apache Commons编解码器Base64 API是迁移使用sun.miscBase64 API的代码的替代品 问题 org.apache.commons.codec.binary.Base64是不受支持的内部Java APIsun.misc.Base64编码器和sun.misc.Base64解码器的替代品吗 插入替换意味着两种实现(Apache Commons Codec和sun.misc)的编码/解码结果相等,因此,它们可以互换使用。对我来说,至少在

背景

这是我原来问题的后续问题,因为Apache Commons编解码器Base64 API是迁移使用
sun.misc
Base64 API的代码的替代品

问题

org.apache.commons.codec.binary.Base64是不受支持的内部Java API
sun.misc.Base64编码器和
sun.misc.Base64解码器的替代品吗

插入替换意味着两种实现(Apache Commons Codec和
sun.misc
)的编码/解码结果相等,因此,它们可以互换使用。

对我来说,至少在一种边缘情况下,Java 8
Java.util.Base64
MIME编码器提供的结果与不受支持的内部Java API
sun.misc.BASE64Encoder
不同

让我们使用

边缘案例测试

对于下面的测试,我使用OpenJDK 7和ApacheCommons编解码器库1.14的
sun.misc.BASE64Encoder
实现

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));
    }

}
公共类StuartMarksBase64编码EdgeCasetForApacheCommonsCodec{
公共静态void main(字符串[]args){
字节[]字节=新字节[57];
字符串enc1=new sun_misc_jdk7.BASE64Encoder().encode(字节);
String enc2=新字符串(org.apache.commons.codec.binary.Base64.encodeBase64(字节));
System.out.println(“enc1=”);
System.out.println(“enc2=”);
System.out.println(enc1.equals(enc2));
}
}
这将导致输出

enc1 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>
enc2 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>
false
enc1=
附件2=
假的
结论

根据测试结果,我得出结论,Apache Commons Codec Base64 API不是迁移使用
sun.misc
Base64 API的代码的替代品