1、编辑原文件src.txt
创建原文件src.txt(也可以是任意类型的文件),这里仅作演示,输入命令:
代码语言:javascript复制echo "This is a digital signature example." > src.txt
2、创建私钥
a、创建私钥:
代码语言:javascript复制#RSA加密算法产生的2048位私钥,并使用F4作为公钥的E参数,将私钥保存在文件key.pri中
openssl genrsa -out key.pri -f4 2048
b、查看私钥:
代码语言:javascript复制#以PEM格式显示私钥的明文输出密钥参数
openssl rsa -inform PEM -in key.pri -text
3、导出公钥
a、导出公钥
代码语言:javascript复制#用rsa的私钥文件key.pri导出PEM格式的公钥,保存在文件key.pub中
openssl rsa -inform PEM -outform PEM -in key.pri -out key.pub -pubout
b、查看公钥
代码语言:javascript复制openssl rsa -inform PEM -in key.pub -pubin -text
4、私钥签名
代码语言:javascript复制#产生签名文件src.sig
openssl dgst -sha256 -out src.sig -sign key.pri -keyform PEM src.txt
#查看签名文件
od -v -An -tx1 src.sig
5、公钥校验
发送者将原文件src.txt、公钥文件key.pub和签名文件src.sig传输给接收者,接收者模拟校验操作。
代码语言:javascript复制openssl dgst -sha256 -keyform PEM -verify key.pub -signature src.sig src.txt
若显示:Verified OK
则表示用公钥校验签名文件是正常的,即接收到的原文件是无篡改和可信的。
若显示:Verification Failure
则表示接收到的文件有篡改或不可信的。
(本文改自教育教学论坛论文:基于Linux下数字签名技术的实现)