2

我必须 ASN1parse 输入的 base64 编码字符串

我可以通过命令使用 openssl 来做到这一点

openssl asn1parse -out outfile.der -in infile

是否有相同的Java等效项?我尝试了许多 ASN1 库,但它们要么产生与 openssl 命令不同的结果,要么我在初始化时遇到问题。

4

2 回答 2

0

您可以解码证书,从中创建一个 java.security.cert.X509Certificate 实例(使用 java.security.cert.CertificateFactory)并使用 getter。希望这可以帮助。

于 2015-03-10T22:58:32.083 回答
0

这是一个老问题,但答案可能对其他人有用。

如果您想将 Base64 字符串解析为 ASN1 结构,您可以使用 BoncyCastle 依赖项,并且应该与上面的 openssl 命令相同。

请在https://mvnrepository.com/artifact/org.bouncycastle上找到 Bouncy Castle Provider depnedy

Java代码:

ASN1Sequence seq = (ASN1Sequence) DERSequence.fromByteArray(Base64.decode(base64String.getBytes()));
int n = seq.size();
for (int i = 0; i < n; i++) {
    ASN1Encodable obj = seq.getObjectAt(i);
    if (obj instanceof DEROctetString) {
        System.out.println(new String(((DEROctetString) obj).getOctets()));
    } else {
        System.out.println(obj);
    }
}
于 2019-09-17T14:29:03.120 回答