将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()
包括行尾字符。
答案 0 :(得分: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();
}
}