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