密码学之数字签名
密码学之数字签名
实验目的
掌握哈希算法与数字签名算法的实现
实验环境
一台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!