【发布时间】:2018-07-03 05:07:44
【问题描述】:
根据例如http://luca.ntop.org/Teaching/Appunti/asn1.html,一个序列的十六进制标记号为10。 但是为什么它被 DER 编码为 30 而不是 10?十六进制标记号为 02 的 INTEGER 也编码为 02。 谢谢。
例如
Sample ::= SEQUENCE {
number 5
}
编码为30 03 02 01 05
【问题讨论】:
根据例如http://luca.ntop.org/Teaching/Appunti/asn1.html,一个序列的十六进制标记号为10。 但是为什么它被 DER 编码为 30 而不是 10?十六进制标记号为 02 的 INTEGER 也编码为 02。 谢谢。
例如
Sample ::= SEQUENCE {
number 5
}
编码为30 03 02 01 05
【问题讨论】:
这是因为在 X.509 格式中,SET 和 SEQUENCE 类型以构造形式使用。结果,第 6 位设置为 1。通过在第 6 位为SEQUENCE 通用标签 (0x10) 设置 1,您将获得 0x30 和 0x31 用于SET(0x11 和第 6 位为 1 = 0x31)。其余通用类型以原始形式编码(第 6 位设置为 0)。
【讨论】: