小编Die*_*rik的帖子

在命令行中使用 openssl 使用公钥进行解密

我想“手动”将消息的摘要/散列与该摘要上解密的签名值进行比较。

为此,我想使用属于最初签署摘要的私钥的公钥来解密消息的签名值(签名摘要)。

我有以下物品:

  • 消息的base64摘要值(使用SHA256计算)
  • 已使用私钥签名的 Base64 摘要上的签名值(使用 SHA256 和 RSA 加密)
  • 属于私钥的 .pem 格式的公钥
  • 我有实际的消息(它是 XML 格式,包含文档不同部分的多个签名)。我已经使用 XML 安全库验证了签名。我只对用公钥解密签名值感兴趣。

我对如何使用 openssl 实现这一目标感到困惑。

我正在尝试对此处此处描述的命令进行变体,但是我有点迷失了。

我想我应该使用以下方法将签名从 base64 值转换为八位字节:

base64 --d sigfile > sigfile_octet

然后我使用命令:

openssl rsautl -inkey pubkey.pem -pubin -in sigfile_octet

这会给我解密的八位字节签名值吗?为了将其与 Base64 摘要进行比较,我需要执行哪些后续步骤?

ps 我已经使用Aleksey 的 XML 安全库验证了签名,所以我知道摘要应该与解密的签名值匹配。

非常感谢您的帮助!

亲切的问候,

迪德里克

encryption command-line openssl digital-signature public-key

6
推荐指数
1
解决办法
1万
查看次数