【问题标题】:Where is my interpretation of ASN1 der wrong?我对 ASN1 der 的解释哪里错了?
【发布时间】:2016-05-01 20:54:48
【问题描述】:

这是我的结构的样子:

 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-  

这不是我期望看到的。 (看看我想要的结构)

我不确定我错过了什么。任何帮助将不胜感激。

【问题讨论】:

  • @erickson 非常感谢您的帮助和专业知识。

标签: encoding openssl cryptography der pyasn1


【解决方案1】:

SET 和 SEQUENCE 是构造的类型。这意味着需要设置标记中指示构造类型的位。那将是第 5 位或第 6 位(取决于您是从第 0 位还是第 1 位开始)。如果未设置该位,则解析器会将其视为原始类型,这意味着它具有单个值而不是子值。这就是您在输出中得到prim 的原因。标记号仍然是 17 或 16,表示 SET OF 或 SEQUENCE,因此结构仍被视为 SET。

因此,您应该使用值 3130,而不是 1110。那么你的代码应该能正确解析。

【讨论】:

  • 请注意,您可以使用 ASN.1 编辑器来构建具有良好 GUI 界面的 BER 结构。您可以使用它们来创建一些测试结构。 “ASN.1 编辑器”只是其中之一。
  • 正在尝试编写我自己的小整数编码器。但我不明白的是,使用 11 或 10 的场景是什么?
  • 基本上从来没有。原始位和标签号的组合没有意义。但是,您可以拆分一些原始类型,例如 OCTET STRING。所以标签 24 可能有意义...
猜你喜欢
  • 2011-08-24
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 2016-08-13
  • 2016-01-26
  • 1970-01-01
  • 2014-04-03
相关资源
最近更新 更多