完成下面任务(10分)
1. 使用 OpenSSL 生成长度为70字节的随机数,最后添加“你的8位学号+姓名首字母”的 ASCII 码,得到HEX字符串S1,提交S1。(4 分)
[wzy@LAPTOP-PRC71A0C ~]$ openssl rand -hex 70
e4e2dd65c7bb0d2227a8241d045072e11d52610c0911b537b8e6e678cccb1a0af987ac726776cfdb53aef569d9d62a82f651de1433eebc460eabb248a5ea3c9fcb16c577c860
我的学号姓名比如叫20221417wzy
那么,
要将字符串 “20221417wzy”
转换为16字节的ASCII码表示,我们需要将每个字符转换为其对应的ASCII码值。下面是每个字符及其对应的ASCII码值:‘2’ -> 50 ‘0’ -> 48 ‘2’ -> 50 ‘2’ -> 50 ‘1’ -> 49 ‘4’ -> 52 ‘1’ -> 49
‘7’ -> 55 ‘w’ -> 119 ‘z’ -> 122 ‘y’ -> 121 将这些ASCII码值转换为16进制表示,我们得到:‘2’ -> 32 ‘0’ -> 30 ‘2’ -> 32 ‘2’ -> 32 ‘1’ -> 31 ‘4’ -> 34 ‘1’ -> 31
‘7’ -> 37 ‘w’ -> 77 ‘z’ -> 7A ‘y’ -> 79即
3230323031343137377a797a
连起来是
e4e2dd65c7bb0d2227a8241d045072e11d52610c0911b537b8e6e678cccb1a0af987ac726776cfdb53aef569d9d62a82f651de1433eebc460eabb248a5ea3c9fcb16c577c8603230323031343137377a797a
2. 按照商用密码标准对 S1进行填充,提交填充过程和填充好的HEX 字符串S2。要包含详细填充过程。 (5 分)
按照sm3的标准
消息长度为708+118=560+88=648比特=l
l+1+k=448 mod 512
k+649=448 mod 512
k=311 k为添加的0的个数 即 填充648比特数据+1个比特“1”+k个“0”
再添加64位比特串 00……01010000100
前面有54位的0,后面表示的是l的二进制
即结果是e4e2dd65c7bb0d2227a8241d045072e11d52610c0911b537b8e6e678cccb1a0af987ac726776cfdb53aef569d9d62a82f651de1433eebc460eabb248a5ea3c9fcb16c577c8603230323031343137377a797a
后面填充1
然后365位的0
以及最后1010000100
提交要求 (1’)
- 记录实践过程和 AI 问答过程,尽量不要截图,给出文本内容
- (选做)推荐所有作业托管到 gitee或 github 上
- (必做)提交作业 markdown文档,命名为“学号-姓名-作业题目.md”
- (必做)提交作业 markdown文档转成的 PDF 文件,命名为“学号-姓名-作业题目.pdf”