DER编码
Posted 仲夏之森
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DER编码相关的知识,希望对你有一定的参考价值。
DER编码
1. Attribute Type编码
对于标识串,采用低标识编码方式,只需1个字节。OBJECT IDENTIFIER的 tag为Ox06;class选择universal,则位8和位7为0,OBJECT IDENTIFIER为基本类型,则位6为0。因此,标识串=0x06。
对于长度串,采用短型编码方式,只需1个字节。
对于内容串,由3个字节组成。2.5.4.6编码为55 04 06,2.5.4.10编码为5504 0A,2.5.4.3编码为55 04 03。
2. AttributeValue编码
对于标识串,采用低标识编码方式,只需1个字节。PrintableString 的 tag 为 0x 13; class选择universal,则位8和位7为0,OBJECT IDENTIFIER为基本类型,则位6为0。因此,标识串=0x13。
对于长度串,采用短型编码方式,只需1个字节。对于内容串,由其ASCII码组成。
countryName为“CN”,organizationName为"20181230", commonName="zhuyoumin"
AttributeValue | 标识符 | 长度串 | 内容串 |
---|---|---|---|
"CN" | 13 | 02 | 43 4E |
"20181230" | 13 | 08 | 32 30 31 38 31 32 33 30 |
"zhuyoumin" | 13 | 09 | 7A 68 75 79 6F 75 6D 69 6E |
3. AttributeValueAssertion编码
对于标识串,采用低标识编码方式,只需1个字节。SEQUENCE的 tag 为0x10;class选择universal,则位8和位7为0,SEQUENCE为结构类型,则位6为1。因此,标识串=0x30。
对于长度串,采用短型编码方式,只需1个字节。
对于内容串,由AttributeType和 AttributeValue的 DER编码值组成。
AttributeValueAssertion | 标识符 | 长度串 | 内容串 |
---|---|---|---|
countryName="CN" | 30 | 09 | 06 03 55 04 06 13 02 43 4E |
organizationName="20181230" | 30 | 0F | 06 03 55 04 0A 13 08 32 30 31 38 31 32 33 30 |
commonName="zhuyoumin" | 30 | 10 | 06 03 55 04 03 13 09 7A 68 75 79 6F 75 6D 69 6E |
4. RelativeDistinguishedName编码
对于标识串,采用低标识编码方式,只需1个字节。SET OF的 tag 为0x11; class 选择universal,则位8和位7为0,SET OF为结构类型,则位6为1。因此,标识串=0x31。
对于长度串,采用短型编码方式,只需1个字节。
对于内容串,由Attribute ValucAssertion的 DER编码值组成。
RelativeDistinguishedName | 标识符 | 长度串 | 内容串 |
---|---|---|---|
countryName="CN" | 31 | 0B | 30 09 06 03 55 04 06 13 02 43 4E |
organizationName="20181230" | 31 | 11 | 30 0F 06 03 55 04 0A 13 08 32 30 31 38 31 32 33 30 |
commonName="zhuyoumin" | 31 | 12 | 30 10 06 03 55 04 03 13 09 7A 68 75 79 6F 75 6D 69 6E |
5. RDNSequence编码
对于标识串,采用低标识编码方式,只需1个字节。SEQUENCE OF的 tag 为0x10;class选择universal,则位8和位7为0,SEQUENCE OF为结构类型,则位6为1。因此,标识串=0x30。
对于长度串,采用短型编码方式,只需1个字节。
对于内容串,由3个 RelativeDistinguishedName的 DER编码值组成。
RDNSequence | 标识符 | 长度串 | 内容串 |
---|---|---|---|
countryName="CN" | 30 | 0D | 31 0B 30 09 06 03 55 04 06 13 02 43 4E |
organizationName="20181230" | 30 | 13 | 31 11 30 0F 06 03 55 04 0A 13 08 32 30 31 38 31 32 33 30 |
commonName="zhuyoumin" | 30 | 14 | 31 12 30 10 06 03 55 04 03 13 09 7A 68 75 79 6F 75 6D 69 6E |
6. Name编码
最终编码为:
30 34
31 0B
30 09
06 03 55 04 06
13 02 43 4E
31 11
30 0F
06 03 55 04 0A
13 08
32 30 31 38 31 32 33 30
31 12
30 10
06 03 55 04 03
13 09
7A 68 75 79 6F 75 6D 69 6E
7. Openssl验证
以上是关于DER编码的主要内容,如果未能解决你的问题,请参考以下文章