ASN.1 SEQUENCE(OF)实际标签值

时间:2011-10-15 13:23:19

标签: asn.1 ber

我发现了很多关于SEQUENCE(OF)ASN.1数据类型的标记值的矛盾信息:

维基百科声称它是0x10和0x30:

  

http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One - >的0x30

     

http://en.wikipedia.org/wiki/Basic_Encoding_Rules - > 0x10的

根据微软的说法,它是0x30:

  

http://msdn.microsoft.com/en-us/library/windows/desktop/bb540799%28v=VS.85%29.aspx

在Bouncycastle的资料中可以找到:

public const int Sequence = 0x10;

所以它基本上是0x10和0x30之间的联系。你知道真正的价值是或者我错过了什么吗?

1 个答案:

答案 0 :(得分:17)

BER编码的“标签”由几个位字段组成:

---------------------------------
| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
---------------------------------
|Class  |P/C| Tag Number        |
---------------------------------
  • 序列的标签号(在通用类中)是0x10。
  • 序列是构造类型,使P / C位为1
  • Universal Class为0
  • 这使得整个八位字节为0x30

请注意,有许多方法可以对BER / DER / CER中的序列进行编码,这取决于所使用的确切ASN.1。例如某些协议可能会覆盖该类并将序列指定为Application Specific类,和/或如果使用了隐式标记,它可能会指定自己的标记号。

您可以阅读BER编码规范here