【发布时间】:2016-01-13 10:00:54
【问题描述】:
我应该将 ASN1 编码的字节数组解析为 Java 对象。我的公司给了我一份结构非常详细的文档。然而在他们解析数据的例子中(没有代码,只是从位映射到值):
- 将最后 7 个字节从 HEX 转换为二进制
- 根据这 7 个字节中的特定位分配值
没有考虑标签和长度。该示例也只是跳过了后续字节。我不确定如何使用 Bouncy Castle ASN1 库解析这样的数据。
这是数据:
这是映射:
22 0....... some field = 0
.01000.. some field = 8
......1. some field = 1
.......0 some field = 0
ASN1 编码的数据必须是标签-长度-值格式还是可以使用某种特定的语法?
现在这是我的代码:
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 类型的对象。
【问题讨论】:
-
您可以为示例数据添加示例 ASN1 语法定义吗?
标签: java parsing bouncycastle asn.1