无法使用 SubtleCrypto Web Crypto 解密使用 PyCryptodome 加密的 RSA-OAEP 消息 API

Unable to decrypt RSA-OAEP message encrypted with PyCryptodome using SubtleCrypto Web Crypto API

在服务器端,我使用 PyCryptodome 通过 RSA-OAEP(使用 SHA-256)加密消息。
我正在尝试在客户端使用 SubtleCrypto Web Crypto API 解密消息,但它给了我一个 DOMException 错误,没有更多详细信息。
在 SubtleCrypto 上,我可以毫无问题地导入在 PyCryptodome 中生成的私钥,但是当我尝试解密消息时它给了我错误。

我还尝试导入在客户端的 PyCryptodome 上生成的 public 密钥,以使用 SubtleCrypto 加密相同的消息。在那种情况下,我可以毫无问题地解密它,使用与以前相同的流程。

这两个库之间的RSA-OAEP算法不兼容吗? 我注意到 PyCryptodome 在各自的文档中引用了 RFC 8017(v2.2) and SubtleCrypto RFC 3447(v2.1)

编辑:

PyCryptodome 应用 SHA-256 作为 OAEP 的默认摘要,但是 SHA-1,here。因此,必须在 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 生成的代码(使用我自己的密钥)。