我发现关于SEQUENCE (of) ASN.1数据类型的标记值的很多矛盾的信息:
维基百科声称它是0x10和0x30:
http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One→0 x30
http://en.wikipedia.org/wiki/Basic_Encoding_Rules→0 x10
根据微软,它是0x30:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb540799%28v=VS.85%29.aspx
在Bouncycastle的资源中可以找到:
public const int Sequence = 0x10;
所以它基本上是0x10和0x30之间的平局。你知道真正的价值是什么吗,还是我错过了什么?
BER编码的标签;由几个位域组成:
<>之前---------------------------------| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |---------------------------------|船级|P/C|吊牌号|---------------------------------之前- 序列(在通用类中)的标签号是0x10。
- A序列是一个construct类型,使得P/C位为1
- 通用类为0
- 这使得整个八位字节0x30
请注意,在BER/DER/CER中有许多方法对序列进行编码,这取决于所使用的确切ASN.1。例如,某些协议可能会覆盖类并指定一个序列作为应用特定类,并且/或者如果使用隐式标记,它可能会指定自己的标签编号。
你可以在这里阅读BER编码规范