[英]base64 encoding issue, java
我正在使用apache库进行base64编码。 但这次问题非常典型。 我有一个b64编码的字符串。
MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD/euDuzBjDANBgkqhkiG9w0BAQUFADCB"+
"5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn
它是证书(.CER)文件的一部分。 我只是解码它并再次编码它,但结果有点不同。 结果字符串是,
“MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD / euDuzBjDANBgkqhkiG9w0BAQUFADA”+“/ 5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn”
不同之处在于第一行的末尾和第二行的开头。 CB由A /替换。
此更改使我的证书无效。 问题出在哪里?
问题在于您的中间字符串转换。 如果你只使用字节数组,一切都很好。
public static void main(String args[]) {
String partOfCer = "MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD/euDuzBjDANBgkqhkiG9w0BAQUFADCB" + "5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn";
byte[] dec1_byte = Base64.decodeBase64(partOfCer.getBytes());
// String dec1 = new String(dec1_byte);
byte[] newBytes = Base64.encodeBase64(dec1_byte);
String newStr = new String(newBytes);
System.out.println(partOfCer);
System.out.println(newStr);
System.out.println(partOfCer.equals(newStr));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.