其实使用gpg也能完成任务。因为看到某个网页有介绍这种方法,于是就记录下。

  • 原理图

LINUX使用OpenSSL进行签名_linux

  •  创建私钥
# 创建私钥
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