使用 openssl 和 node.js 验证签名

Posted

技术标签:

【中文标题】使用 openssl 和 node.js 验证签名【英文标题】:Verify signature with openssl and node.js 【发布时间】:2020-03-23 17:23:08 【问题描述】:

我正在尝试验证 node.js 中的 openssl 签名,但无法完成。我正在使用这个包:https://github.com/codevibess/openssl-nodejs

我所拥有的:签名 SHA-512 哈希、公钥和已签名的令牌 我想要什么:openssl 应该告诉我签名是否有效

在控制台中我会这样做:

openssl dgst -sha512 -verify pub_key.pem -signature bas64_decoded_hash my_token

但是当我跑步时:

openssl('openssl dgst -sha512 -verify ' + publicKey + ' -signature ' + signature + ' ' + token, function (err, buffer) 
console.log(err.toString(), buffer.toString()););

我收到类似“OpenSSL 进程以代码 1 结束”之类的错误 没有要验证的签名:使用 -signature 选项"

有什么建议吗?

【问题讨论】:

【参考方案1】:

我实际上最终用私钥加密了一个令牌,然后将令牌和加密值发送给接收者。

在接收端,我使用公钥解密该值:

execShellCommand('echo "' + request.body.signature + '" | openssl base64 -d|openssl rsautl -inkey rsa.public -pubin');

最后我检查解密结果是否与令牌匹配。

【讨论】:

以上是关于使用 openssl 和 node.js 验证签名的主要内容,如果未能解决你的问题,请参考以下文章

Node.js:签名验证(PS256)在 Node.js 中成功,但在 jwt.io 调试器中失败

Node.js v0.10.31API手冊-加密

Node.js v0.10.31API手冊-加密

openssl生成签名与验证签名

openssl dgst(生成和验证数字签名)

使用 openssl dgst 验证文件签名