我对 ASN1 der 的解释哪里错了?
Where is my interpretation of ASN1 der wrong?
这是我的结构:
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-
这不是我期望看到的。 (看看我想要的结构)
我不确定我错过了什么。任何帮助将不胜感激。
SET 和 SEQUENCE 是构造类型。这意味着需要设置标记中指示构造类型的位。那将是第 5 位或第 6 位(取决于您是从第 0 位还是第 1 位开始)。如果未设置该位,则解析器会将其视为原始类型,这意味着它具有单个值而不是子值。这就是您在输出中得到 prim
的原因。标记号仍然是 17 或 16,表示一个 SET OF 或 SEQUENCE,因此该结构仍然被视为一个 SET。
因此,您应该使用值 31
和 30
,而不是 11
和 10
。然后你的代码应该正确解析。
这是我的结构:
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-
这不是我期望看到的。 (看看我想要的结构)
我不确定我错过了什么。任何帮助将不胜感激。
SET 和 SEQUENCE 是构造类型。这意味着需要设置标记中指示构造类型的位。那将是第 5 位或第 6 位(取决于您是从第 0 位还是第 1 位开始)。如果未设置该位,则解析器会将其视为原始类型,这意味着它具有单个值而不是子值。这就是您在输出中得到 prim
的原因。标记号仍然是 17 或 16,表示一个 SET OF 或 SEQUENCE,因此该结构仍然被视为一个 SET。
因此,您应该使用值 31
和 30
,而不是 11
和 10
。然后你的代码应该正确解析。