密码学之数字签名
密码学之数字签名
实验目的
掌握哈希算法与数字签名算法的实现
实验环境
一台Centos 7.2 已经安装openssl组件
实验原理
openssl是Linux内置的一款开源工具,实现了常见的密码算法与应用。通过openssl操作,完成各种密码算法的应用。
实验步骤
一、生成测试文件
| echo 12345 > test.txt | 

二、使用MD5算法生成哈希值
生成md.txt的哈希
| openssl dgst -md5 md.txt | 

复制md.txt文件
| cp md.txt md.txt.2 | 

对md.txt.2生成md5哈希值
| openssl dgst -md5 md.txt.2 | 

比对发现md.txt和md.txt.2两个文件的哈希值一样
三、使用RSA签名
1、生成RSA密钥对
openssl genrsa -out rsa.key 1024
2、导出公钥
| openssl rsa -in rsa.key -pubout -out rsa_pub.key | 

3、使用rsa私钥签名
| openssl sha1 -sign rsa.key -out rsasign.bin test.txt | 

4、使用rsa 公钥验证签名
| openssl sha1 -verify rsa_pub.key -signature rsasign.bin test.txt | 

四、使用DSA签名
1、生成dsa参数
| openssl dsaparam -out dsap.pem 1024 | 

2、查看dsa参数明文
| openssl dsaparam -in dsap.pem -text -noout | 

3、使用上述参数生成dsa密钥
| openssl gendsa -out dsa1.pem dsap.pem | 

4、再次使用上述参数生成dsa密钥
| openssl gendsa -out dsa2.pem dsap.pem | 
比较上述两个密钥,由相同参数生成的两个密钥是不同的。
| diff dsa1.pem dsa2.pem | 

6、由参数生成私钥,并使用des加密
| openssl gendsa -out dsaprivatekey.pem -des3 dsap.pem | 

7、由私钥生成公钥
| openssl dsa -in dsaprivatekey.pem -pubout -out dsapublickey.pem | 

8、使用私钥dsaprivatekey.pem签名text.txt,dsasign.bin为签名文件
| openssl dgst -dss1 -sign dsaprivatekey.pem -out dsasign.bin test.txt | 

9、使用公钥验证签名
| openssl dgst -dss1 -verify dsapublickey.pem -signature dsasign.bin test.txt | 

10、使用私钥验证签名
| openssl dgst -dss1 -prverify dsaprivatekey.pem -signature dsasign.bin test.txt | 

实验总结
通过使用rsa和dsa的签名,加强密码学中签名应用的理解。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 You_zip!
