Linux下基于openssl实现数字签名

2020-12-03 11:32:47 浏览数 (3)

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下数字签名技术的实现)

0 人点赞