实验目的
掌握哈希算法与数字签名算法的实现
实验环境
一台已经安装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步骤设置的密码