DER编码
完成下面任务(9分)
- 在 Ubuntu 或 openEuler 中完成任务(推荐openEuler)
- 使用抽象语法记法(ASN.1)来定义学生数据结构:
StudentInfo ::= SEQUENCE {
studentID INTEGER,
name IA5String,
score INTEGER
} - 对上面数据结构使用你的信息进行填充,studentID是 8 位学号;name 是姓名首字母;score:60-100 数字,填充完使用 echo 命令得到“你的八位学号.der”文件,给出编码过程和echo命令具体内容(5 分)
- 生成 DER 文件
openssl asn1parse -genconf <(echo -e “StudentInfo\n\tstudentID 20221327\n\tname ‘LZJ’\n\tscore 85”) -out 20221327.der
2. 查看 DER 文件的十六进制内容
运行以下命令:
od -t x1 20221327.der
3. 解析 DER 文件
运行以下命令:
openssl asn1parse -inform der -in 20221327.der
修改后的运行结果
生成 DER 文件
运行以下命令:
openssl asn1parse -genconf <(echo -e “StudentInfo\n\tstudentID 20221327\n\tname ‘LZJ’\n\tscore 85”) -out 20221327.der
查看 DER 文件的十六进制内容
运行以下命令:
od -t x1 20221327.der
输出示例:
0000000 30 0d 02 04 78 56 34 12 16 03 4c 5a 4a 02 01 55
0000020
解释:
30:SEQUENCE 的标签。
0d:SEQUENCE 的长度(13 字节)。
02 04:INTEGER 的标签和长度(4 字节)。
78 56 34 12:学生ID 20221327 的编码(假设为示例数据)。
16 03:IA5String 的标签和长度(3 字节)。
4c 5a 4a:姓名 LZJ 的编码。
02 01 55:分数 85 的编码。
解析 DER 文件
运行以下命令:
openssl asn1parse -inform der -in 20221327.der
输出示例:
0:d=0 hl=2 l= 13 cons: SEQUENCE
2:d=1 hl=2 l= 4 prim: INTEGER :20221327
8:d=1 hl=2 l= 3 prim: IA5STRING :LZJ
13:d=1 hl=2 l= 1 prim: INTEGER :85
解释:
0:d=0 hl=2 l= 13 cons: SEQUENCE:表示这是一个长度为 13 字节的 SEQUENCE。
2:d=1 hl=2 l= 4 prim: INTEGER :20221327:表示学生ID 20221327。
8:d=1 hl=2 l= 3 prim: IA5STRING :LZJ:表示姓名 LZJ。
13:d=1 hl=2 l= 1 prim: INTEGER :85:表示分数 85。
- 使用 od 命令查看“你的八位学号.der”文件的内容,提交运行结果(2分)
十六进制内容
0000000 30 0d 02 04 78 56 34 12 16 03 4c 5a 4a 02 01 55
0000020
-
使用 OpenSSL asn1parse 命令解析“你的八位学号.der”文件,提交运行结果(2分)
ASN.1 解析结果0:d=0 hl=2 l= 13 cons: SEQUENCE
2:d=1 hl=2 l= 4 prim: INTEGER :20221327
8:d=1 hl=2 l= 3 prim: IA5STRING :LZJ
13:d=1 hl=2 l= 1 prim: INTEGER :85