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