base64编码问题,java

时间:2012-10-10 08:33:56

标签: java encoding base64

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

MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD/euDuzBjDANBgkqhkiG9w0BAQUFADCB"+
"5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn

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

“MIIHSjCCBjKgAwIBAgIQQuw1emUfNRlPD / euDuzBjDANBgkqhkiG9w0BAQUFADA”+“/ 5TELMAkGA1UEBhMCRVMxIDAeBgkqhkiG9w0BCQEWEWFjQGFjYWJvZ2FjaWEub3Jn”

差异在第一行的末尾和第二行的开头。 CB A / 替换。

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

1 个答案:

答案 0 :(得分:4)

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

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));
    }