2

我正在使用 apache 库对 base64 进行编码。但是这个时间问题很典型。我有一个 b64 编码的字符串。

MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD/euDuzBjDANBgkqhkiG9w0BAQUFADCB"+
"5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn

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

"MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD/euDuzBjDANBgkqhkiG9w0BAQUAFADA"+ "/5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn"

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

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

4

1 回答 1

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));
    }
于 2012-10-10T08:53:39.197 回答