java的base64编码问题

Rav*_*i A 2 java base64 encoding

我正在使用 apache 库来编码为 Base64。但这次的问题很典型。我有一个 b64 编码的字符串。

MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD/euDuzBjDANBgkqhkiG9w0BAQUFADCB"+
"5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn
Run Code Online (Sandbox Code Playgroud)

它是证书 (.CER) 文件的一部分。我只是对其进行解码并再次对其进行编码,但结果略有不同。结果字符串是,

“MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD/euDuzBjDANBgkqhkiG9w0BAQUFADA”+“/5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn”

区别在于第一行的末尾和第二行的开头。CBA/取代。

此更改使我的证书失效。问题可能出在哪里?

zve*_*vez 5

问题出在你的中间字符串转换上。如果只使用字节数组,一切都很好。

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)