我尝试使用 Java 将 ASN.1 字节数组转换为字符串。我到现在的结果:
byte[] asn = ocspResponse.getEncoded();
String liccert = new String(asn, "Cp850");
此字符串包含一些非常令人不安的字符串工件:
像这样:
4¦20110416173611Z0üÏ0üi0:0
有没有办法像这样转换字节数组:
RFMRIwEAYDVQQIEwlsb2NhbGhvc3QxFDASBgNV?
您绝对不应该使用 String 构造函数将任意二进制数据转换为字符串。该构造函数用于获取实际上是编码文本的二进制数据并从中构建字符串。您的数据并不是真正的编码文本 - 它只是任意二进制数据。假装它最初是文本是导致数据丢失的秘诀。
最好的方法通常是对它进行 Base64 编码。有很多第三方库可以做到这一点,包括Apache Commons Codec或这个公共域编码器。
例如,使用后者:
String liccert = Base64.encodeBytes(asn);