【问题标题】:ASN.1 SEQUENCE (OF) real tag valueASN.1 SEQUENCE (OF) 真实标签值
【发布时间】:2011-10-15 13:23:19
【问题描述】:

我发现很多关于 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 之间的平局。你知道真正的价值是还是我错过了什么?

【问题讨论】:

    标签: asn.1 ber


    【解决方案1】:

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

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

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

    您可以阅读 BER 编码规范 here

    【讨论】:

    • 感谢详细的解释!
    猜你喜欢
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多