我应该将ASN1编码的字节数组解析为Java 。我的公司给了我一份结构非常详细的文件。但是,在解析数据的示例中(没有代码,只是从位到值的映射):
对于标记和长度,没有考虑。该示例还跳过了进行中的字节。我不确定如何使用Bouncy ASN1库解析这样的数据。
以下是数据:
这是地图:
22 0....... some field = 0
.01000.. some field = 8
......1. some field = 1
.......0 some field = 0ASN1编码的数据必须是标记长度值格式,还是可以使用某种特定的语法?
现在这是我的密码:
ASN1InputStream asn1InputStream = new ASN1InputStream(
new ByteArrayInputStream(
ByteArrayUtil.hexStringToByteArray(
"16" + "07" +
"22" + "00" + "00" + "19" + "BF" + "12" + "E0")));
ASN1Primitive deria5String;
while ((deria5String = asn1InputStream.readObject()) != null) {
//process
}解析最后7个字节给出了DERIA5String类型的对象。
编辑1:这里是我应该读到的ASN1结构的定义:

这就是我在文档中阅读InputStream的例子:

发布于 2016-01-14 15:38:57
ASN1编码的数据必须是标记长度值格式,还是可以使用某种特定的语法?
BER和DER编码的数据使用TLV格式。但是,这并不意味着应用程序没有给某些八进制字符串、整数字符串、字符串等赋予一些特殊的含义,这不是ASN.1所表示的。如果我要进行猜测,因为“1607”对应于标签通用22和长度7,其中特定的标记指示一个字符串,我猜他们正在解析字符串中的一些数据。
https://stackoverflow.com/questions/34763576
复制相似问题