在服务器端,我使用PyCryptodome用RSA-OAEP (使用SHA-256)加密消息。
我试图在客户端使用SubtleCrypto Web解密消息,但是它给了我一个DOMException错误,没有进一步的细节。
在SubtleCrypto上,我可以导入在PyCryptodome中生成的私钥,没有问题,但是当我试图解密消息时,它会给出错误。
我还尝试导入客户端在PyCryptodome上生成的公钥,以便用SubtleCrypto加密相同的消息。在这种情况下,我可以毫无问题地解密它,使用与以前相同的流。
这两个库之间的RSA-OAEP算法不兼容吗?我注意到PyCryptodome在各自的文档中引用了RFC 8017(v2.2)和SubtleCrypto RFC 3447(v2.1)。
编辑
发布于 2020-08-26 13:27:58
PyCryptodome 不使用作为OAEP的默认摘要,而是将SHA-1、这里作为默认摘要。因此,必须在WebCrypto端使用SHA-1:
let algorithmParams: RsaHashedImportParams = {
name: "RSA-OAEP",
hash: "SHA-1"
};当然,您也可以在PyCryptodome端应用SHA-256,然后在WebCrypto端不需要进行任何更改。
from Crypto.Hash import SHA256
...
rsa_encryption_cipher = PKCS1_OAEP.new(key, SHA256) # default: Crypto.Hash.SHA1有了双方一致的摘要,我就可以用您的WebCrypto代码成功地解密一个密文,这是我以前用您的PyCryptodome代码生成的(使用我自己的密钥)。
https://stackoverflow.com/questions/63595996
复制相似问题