根据例如http://luca.ntop.org/Teaching/Appunti/asn1.html,一个序列在十六进制中的标签号为10。
但是为什么它 DER 编码后是30而不是10呢?标签号为02的整数也被编码为02。
谢谢。
Sample ::= SEQUENCE {
number 5
}
编码为30 03 02 01 05
Sample ::= SEQUENCE {
number 5
}
编码为30 03 02 01 05
这是因为在 X.509 格式中,SET
和 SEQUENCE
类型是以构造形式使用的。结果,第 6 位被设置为 1。将 SEQUENCE
通用标记(0x10)的第 6 位设置为 1,您将得到 0x30,将 SET
(0x11)设置为 0x31,第 6 位设为 1=0x31。其余的通用类型则以原始形式编码(第 6 位设置为 0)。