其实使用gpg也能完成任务。因为看到某个网页有介绍这种方法,于是就记录下。
- 原理图
- 创建私钥
# 创建私钥
openssl genrsa -out key.pri -f4 2048
# 查看私钥
openssl rsa -inform PEM -in key.pri -text
- 导出公钥
# 导出公钥
openssl rsa -inform PEM -outform PEM -in key.pri -out key.pub -pubout
# 查看公钥
cat key.pub
- 方法1:私钥签名、公钥校验
测试发现方法1与方法2的sig文件不同。所以要分开。
# 签名
openssl dgst -sha256 -out file.sig -sign key.pri -keyform PEM file.txt
# 查看签名
od -v -An -t x1 file.sig
# 公钥校验
openssl dgst -sha256 -keyform PEM -verify key.pub -signature file.sig file.txt
- 方法2:私钥签名、公钥校验
# 私钥签名
openssl dgst -sha256 -binary -out file.sha256 file.txt
openssl rsautl -out file.sig -sign -inkey key.pri -in file.sha256
# 查看签名
od -v -An -t x1 file.sig
# 计算信息摘要
openssl rsautl -out file.rec -inkey key.pub -in file.sig -pubin -verify
# 查看信息摘要
od -v -An -t x1 file.rec
# 计算原文件f的信息摘要。
openssl dgst -sha256 -binary -out file.sha256 file.txt
# 查看
od -v -An -t x1 file.sha256