密码学实训之数字签名

实验目的

掌握哈希算法与数字签名算法的实现

实验环境

一台已经安装openssl组件的Centos 7.2

实验原理

通过使用Linux内置的一款开源工具openssl,可以实现常见的密码算法与应用。操作openssl,可以完成各种密码算法的应用。

实验步骤

一、生成测试文件

#通过echo命令生成两个测试文件a.txt和b.txt

echo 123 >  a.txt
echo qwe > b.txt

二、使用MD5算法生成哈希值

2.1生成b.txt的哈希值

openssl dgst -md5 b.txt

2.2复制b.txt文件

cp md.txt  b.txt.2

2.3对b.txt.2生成md5哈希值

openssl dgst -md5 b.txt.2

#通过对比发现b.txt和b.txt.2的哈希值是一样的

三、使用RSA签名

3.1生成RSA密钥对

openssl genrsa -out rsa.key 1024

#生成的私钥就是rsa.key

3.2导出公钥

openssl rsa -in rsa.key -pubout -out rsa_pub.key

#导出的公钥就是rsa_pub.key

3.3使用rsa私钥签名

openssl sha1 -sign rsa.key -out rsasign.bin a.txt

#签名完后生成了一个新的文件rsasign.bin

3.4使用rsa 公钥验证签名

 #验证成功

 #如果还是使用私钥去验证就是失败的

四、使用DSA签名

4.1生成dsa参数

openssl dsaparam -out dsap.pem 1024

 #通过命令生成dsa参数,放在dsap.pem里面

 #查看生成文件内容

4.2查看dsa参数明文

openssl dsaparam -in dsap.pem -text -noout

4.3使用上述参数生成dsa密钥

openssl gendsa -out dsa1.pem dsap.pem

#生成的密钥为dsa1.pem

4.4再次使用上述参数生成dsa密钥 

openssl gendsa -out dsa2.pem dsap.pem

#生成的密钥为dsa2.pem

4.5比较上述两个密钥

 

 #由相同参数生成的两个密钥是不同的

4.6由参数生成私钥,并使用des加密

openssl gendsa -out dsaprivatekey.pem -des3 dsap.pem

#密码不能设的太简单,不要像123这样,不然会报错。要连续输入两次一样的密码才算设置成功

4.7由私钥生成公钥

openssl dsa -in dsaprivatekey.pem -pubout -out dsapublickey.pem

#打完命令以后要输入4.6步骤中设置的密码

4.8使用私钥dsaprivatekey.pem签名a.txt,ds.bin为签名文件

openssl dgst -dss1 -sign dsaprivatekey.pem -out ds.bin a.txt

#这里还有再输一遍4.6步骤中设置的密码,不然会报错。

4.9使用公钥验证签名

openssl dgst -dss1 -verify dsapublickey.pem -signature ds.bin a.txt

4.10使用私钥验证签名

 #还是输入4.6步骤设置的密码

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值