我有这样的数据序列

SEQUENCE(2个元素)

对象标识符1.3.6.1.4.1.41482.3.7

OCTET STRING(1个元素)

整数7029542

我可以得到十进制字符串为02036b4326的OctectString
02我认为是整数标记,03是长度,6b4326是整数的十六进制值
尝试找出Bouncy Castle库中是否内置有可以传递十六进制值或DEROCTECTString并能够取回Integer值的库。

最佳答案

我想我想出了答案,看来您必须创建一个新的ASN1InputStream并将OCTECT字符串的值传递给它,然后将其读为ASN1Integer

像这样的东西

ASN1InputStream asn1InputStream = new SN1InputStream(attestationExtensionBytes);
DEROctetString octString=(DEROctetString) asn1InputStream.readObject();
byte[] octectBytes=octString.getOctets();
asn1InputStream =new ASN1InputStream (octectBytes);
ASN1Integer asn1Integer=(ASN1Integer)asn1InputStream.readObject();

07-27 13:58