Rav*_*i A 2 java base64 encoding
我正在使用 apache 库来编码为 Base64。但这次的问题很典型。我有一个 b64 编码的字符串。
MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD/euDuzBjDANBgkqhkiG9w0BAQUFADCB"+
"5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn
Run Code Online (Sandbox Code Playgroud)
它是证书 (.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));
}
Run Code Online (Sandbox Code Playgroud)