Encoding 我对ASN1 der的解释哪里错了?
我的结构如下所示:Encoding 我对ASN1 der的解释哪里错了?,encoding,openssl,cryptography,der,pyasn1,Encoding,Openssl,Cryptography,Der,Pyasn1,我的结构如下所示: SET OF SEQUENCE: INTEGER: XX INTEGER: YY 我的编码如下所示: 11 08 10 06 02 01 XX 02 01 YY 11 08 -- SET OF 10 06 -- SEQUENCE 然而,当我用openssl解码时,我看不到预期的输出。看起来像 0:d=0 hl=2 l= 8 prim: SET 0000 - 10 06 02
SET OF
SEQUENCE:
INTEGER: XX
INTEGER: YY
我的编码如下所示:
11 08 10 06 02 01 XX 02 01 YY
11 08 -- SET OF
10 06 -- SEQUENCE
然而,当我用openssl解码时,我看不到预期的输出。看起来像
0:d=0 hl=2 l= 8 prim: SET
0000 - 10 06 02 01 XX 02 01 YY-
这不是我期望看到的。(看看我想要的结构)
我不确定我错过了什么。任何帮助都将不胜感激。集合和序列是构造的类型。这意味着需要设置指示标记中构造类型的位。这将是位5或6(取决于从位0或1开始)。如果未设置该位,则解析器将其视为基元类型,这意味着它只有一个值而不是子值。这就是为什么输出中会出现prim
。标记号仍然是17或16,表示一组或序列,因此结构仍然被视为一组
因此,应该使用值
31
和30,而不是11
和10
。然后您的代码应该能够正确解析。@erickson非常感谢您的帮助和专业知识。请注意,有ASN.1编辑器,您可以使用它构建具有良好GUI界面的BER结构。您可以使用它们来创建一些测试结构。“ASN.1编辑器”只是其中之一。我正试图为整数编写自己的小编码器。但我不明白的是,在什么情况下,人们会使用11或10?基本上不会。原始位和标记号的组合没有意义。但是,您可以拆分一些基本类型,例如八位字符串。所以标签24可能有意义。。。