0

更换时遇到以下sun.misc.BASE64Encoder问题org.apache.commons.codec.binary.Base64

我正在使用X509Certificate,我需要使用Base64它来编码由结果获得的字节数组java.security.cert.Certificate.getEncoded()

看起来在保留它的org.apache.commons.codec.binary.Base64同时消除了换行符,请参见下面的代码:sun.misc.BASE64Encoder

String certString =  Base64.encodeBase64(certificate.getEncoded());

VS

sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();          
String certString = encoder.encode(certificate.getEncoded());

我知道有一个选项可以使用encodeBase64Chunked,但默认值为 76 个字符,此外还有一个选项来定义 lineLength 和 lineSeparator 但我不想使用固定长度而是使用我的输入 -certificate.getEncoded()包括行尾字符.

4

1 回答 1

0

尝试这个:

@Test
public void testBase64() {
String str = "a string with some\n\n newlines";
try {
    // To base 64
    String base64 = javax.xml.bind.DatatypeConverter.printBase64Binary(str.getBytes("UTF8"));

    // From base 64
    byte[] clear = javax.xml.bind.DatatypeConverter.parseBase64Binary(base64);
    String clearText = new String(clear, "UTF8");

    assertEquals(str, clearText);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    fail();
}

}
于 2012-08-08T05:33:10.330 回答