go crypto/rsa: RSA-PSS PKCS1v15应该支持SHA3哈希(以及其他哈希算法)

sg24os4d  于 4个月前  发布在  Go
关注(0)|答案(6)|浏览(56)

这个问题在最新版本中是否重现?

是的

你做了什么?

rsa.VerifyPKCS1v15(myPublicKey, crypto.SHA3_224, hashed, signature)

你期望看到什么?

一个正确验证过的哈希值。对于不在查找表中的算法,pkcs1v15HashInfo() 需要计算 ASN1 DER 前缀。

你实际上看到了什么?

crypto/rsa: unsupported hash function

附加说明

当前代码有一个预先计算好的 ASN1 DER 前缀表,包含8个算法。所有其他算法都得到 crypto/rsa: unsupported hash function,尽管它们是有效的。

kmynzznz

kmynzznz2#

对我来说,为什么有人想要使用遗留的PKCS#1 v1.5与SHA-3一起使用还不太清楚,但如果有需要,我会接受一个PR来添加相关的ASN.1前缀。

a7qyws3x

a7qyws3x3#

我也希望我正在处理的签名的发起人使用了PSS。我会尽量找时间提交一个PR,这样我就可以放弃我目前已经实施的解决方法。

4smxwvx5

4smxwvx54#

尝试重新实现一个程序,出于某种原因,他们以这种方式使用SHA-3哈希,这对我来说是错误的。
@shaunco 你的解决方法是什么?

qjp7pelc

qjp7pelc5#

https://go.dev/cl/464695提到了这个问题:crypto: pkcs1v15 should support sha3 hashes and others

balp4ylt

balp4ylt6#

对我来说,为什么有人想要使用遗留的PKCS#1 v1.5与SHA-3一起使用还不太清楚,但如果有需要,我会接受一个PR来添加相关的ASN.1前缀。
不幸的是,即使在新的硬件上,如ZynqMP FPGA,它仍然在使用RSA4096-SHA3-384与pkcs#1v1.5一起使用;我怀疑还有其他具有类似设置的硬件。在这些情况下,没有支持pkcs#1v.15与SHA3的硬件也意味着很难(并非不可能)使用Vault传输密钥进行签名。

相关问题