首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析ASN1数据

解析ASN1数据
EN

Stack Overflow用户
提问于 2016-01-13 10:00:54
回答 1查看 2K关注 0票数 4

我应该将ASN1编码的字节数组解析为Java 。我的公司给了我一份结构非常详细的文件。但是,在解析数据的示例中(没有代码,只是从位到值的映射):

  1. 将HEX的最后7个字节转换为二进制
  2. 根据这7个字节中的特定位赋值

对于标记和长度,没有考虑。该示例还跳过了进行中的字节。我不确定如何使用Bouncy ASN1库解析这样的数据。

以下是数据:

示例数据

这是地图:

代码语言:javascript
复制
22 0....... some field = 0
   .01000.. some field = 8
   ......1. some field = 1
   .......0 some field = 0

ASN1编码的数据必须是标记长度值格式,还是可以使用某种特定的语法?

现在这是我的密码:

代码语言:javascript
复制
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的例子:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-14 15:38:57

ASN1编码的数据必须是标记长度值格式,还是可以使用某种特定的语法?

BER和DER编码的数据使用TLV格式。但是,这并不意味着应用程序没有给某些八进制字符串、整数字符串、字符串等赋予一些特殊的含义,这不是ASN.1所表示的。如果我要进行猜测,因为“1607”对应于标签通用22和长度7,其中特定的标记指示一个字符串,我猜他们正在解析字符串中的一些数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34763576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档