gpt4 book ai didi

ruby - SHA 哈希在签署 OpenSSL 库中的文档时起什么作用?

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:59 26 4
gpt4 key购买 nike

我正在关注 OpenSSL生成签名的指令。我正在使用 ruby​​ 2.1.0 并生成如下签名:

document = "This is a simple string document to be signed"
key = OpenSSL::PKey::RSA.new([private_key])
digest = OpenSSL::Digest::SHA256.new
signature = key.sign digest, document

签名被传输并到达要验证的目的地。为了验证,我这样做:

key = OpenSSL::PKey::RSA.new([pubkey])
digest = OpenSSL::Digest::SHA256.new
key.verify digest, signature, document # => valid

这是有效的,因为如果我们只更改文档或签名的一个字母,这将返回无效结果:

key.verify digest, signature, changed_document # => Invalid

但使用不同的 SHA,验证命令仍然会产生有效结果:

digest = OpenSSL::Digest::SHA256.new('this will generate different SHA')
key.verify digest, signature, document # => valid

这让我很困惑。不同的 SHA 哈希值不应该导致无效结果吗? digest在这里的作用是什么?

最佳答案

将参数传递给 OpenSSL::Digest::SHA256.new 会导致该数据被添加到摘要中。

但是,openssl 签名函数会在使用摘要之前重置摘要,因此在这种特殊情况下额外的数据不会产生任何影响。

关于ruby - SHA 哈希在签署 OpenSSL 库中的文档时起什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com