DER编码

DER编码

目录
* 查看ASCII码

  • DER编码过程

一、查看ASCII码

echo -n "CN" | od -tc -tx1
echo -n "zhaobin" | od -tc -tx1
echo -n "20201229" | od -tc -tx1
C   N
43  4e

2   0   2   1   1   3   0   6
32  30  32  31  31  33  30  36

d   i   n   g   w   e   n   b   o
64  69  6e  67  77  65  6e  62  6f


二、DER编码过程

1.ASN.1描述与实例


Name 类型定义为 CHOICE类型,目前只有1个选项RDNSequence。RDNSequence 定义为SEQUENCE OF 类型,由0个或多个 RelativeDistinguishedName 组成。RelativeDistinguishedName定义为SET OF类型,由0个或多个AttributeValueAssertion组成。AttributeValueAssertion定义为SEQUENCE类型,由2个成分组成:1个为AttributeType类型和1个AttributeValue类型。AttributeType定义为OBJECTIDENTIFIER类型。AttributeValue 定义为 ANY 类型,具体内容由AttributeType 决定。
事实上,Name类型可理解为分层或树形结构,即X.500目录树结构。

1.Attribute Type 编码

AttributeType为OBJECTIDENTIFIER基本类型,编码规则采用基本类型定长模式。对于标识串,采用低标识编码方式,只需1个字节。OBJECTIDENTIFIER的tag为0x06:class选择universal,则位8和位7为0,OBJECTIDENTIFIER为基本类型,则位6为0。因此,标识串=0x06。
对于长度串,采用短型编码方式,只需1个字节。对于内容串,由3个字节组成。2.5.4.6编码为55 0406,2.5.4.10编码为 55 04 0A,2.5.4.3编码为 55 04 03。

Attribute Type OID定义 标识串 长度串 内容串
countrysideName 2.5.4.6 06 03 55 04 06
organizationNAme 2.5.4.10 06 03 55 04 0A
commonName 2.5.4.3 06 03 55 04 03

2.AttributeValue 编码

AttributeValue 为PrintableString基本类型,编码规则采用基本类型定长模式。对于标识串,采用低标识编码方式,只需1个字节。PrintableString的tag为0x13;class选择universal,则位8和位7为0,OBJECTIDENTIFIER为基本类型,则位6为0。因此标识串=0x13。
对于长度串,采用短型编码方式,只需1个字节。
对于内容串,由其 ASCII码组成。

AttributeValue 标识串 长度串 内容串
"CN" 13 02 43 4E
"20211306" 13 08 32 30 32 31 31 33 30 36
"dingwenbo" 13 09 64 69 6e 67 77 65 6e 62 6f

3.AttributeValueAssertion 编码

AttributeValueAssertion为SEQUENCE 结构类型,编码规则采用结构类型定长模式对于标识串,采用低标识编码方式,只需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="20211306" 30 0F 06 03 55 04 0A 13 08 32 30 32 31 31 33 30 36
commonName="dingwenbo" 30 10 06 03 55 04 03 13 09 64 69 6e 67 77 65 6e 62 6f

4.RelativeDistinguishedName 编码

RelativeDistinguishedName为SETOF结构类型,编码规则采用结构类型定长模式对于标识串,采用低标识编码方式,只需1个字节。SETOF的tag为0x11;class选择universal,则位8和位7为0,SETOF为结构类型,则位6为1。因此,标识串=0x31。对于长度串,采用短型编码方式,只需1个字节。
对于内容串,由AttributeValueAssertion的DER编码值组成

RelativeDistinguishedName 标识串 长度串 内容串
countryName="CN" 31 0B 30 09 06 03 55 04 06 13 02 43 4E
organizationName= "20211306" 31 11 30 0F 06 03 55 04 0A 13 08 32 30 32 31 31 33 30 36
commonName="dingwenbo" 31 12 30 10 06 03 55 04 03 13 09 64 69 6e 67 77 65 6e 62 6f

5.RDNSEquence 编码

RDNSequence为SEQUENCEOF结构类型,编码规则采用结构类型定长模式。对于标识串,采用低标识编码方式,只需1个字节。SEQUENCEOF的tag为0x10:class选择universal,则位8和位7为0,SEQUENCEOF为结构类型,则位6为1。因此标识串=0x30。
对于长度串,采用短型编码方式,只需1个字节。
对于内容串,由3个RelativeDistinguishedName的DER编码值组成。

RDNSequence 标识串 长度串 内容串
countryName="CN" organizationName= "20211306" commonName="dingwenbo" 30 34 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 32 31 31 33 30 36 31 12 30 10 06 03 55 04 03 13 09 64 69 6e 67 77 65 6e 62

6.Name 编码

Name为CHOICE类型,其DER编码值与RDNSequence相同

DER编码值 ASN.1描述
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 32 31 31 33 30 36 31 12 30 10 06 03 55 04 03 13 09 64 69 6e 67 77 65 6e 62 6f attributeType=countryName attributeValue="CN" attributeType=organizationName attributeValue="20211306" attributeType=commonName attributeValue="dingwenbo"

7.实操过程

  • 验证方法:
openssl asn1parse -inform der -in ./20211306.der
  • countryName="CN"
echo -n -e "\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E" > 20211306.der

  • organization Name="21211306"
echo -n -e "\x31\x11\x30\x0F\x06\x03\x55\x04\x0A\x13\x08\x32\x30\x32\x31\x31\x33\x30\x36" >> 20211306.der

  • commonName="dingwenbo"
echo -n -e "\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x64\x69\x6e\x67\x77\x65\x6e\x62\x6f" >> 20211306.der

  • 完整
echo -n -e "\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E" > 20211306.der
echo -n -e "\x31\x11\x30\x0F\x06\x03\x55\x04\x0A\x13\x08\x32\x30\x32\x31\x31\x33\x30\x36" >> 20211306.der
echo -n -e "\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x64\x69\x6e\x67\x77\x65\x6e\x62\x6f" >> 20211306.der

posted @ 2024-03-30 20:20  20211306丁文博  阅读(9)  评论(0编辑  收藏  举报