小编Ser*_*les的帖子

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

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

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

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

编辑

  • 服务器端代码(pycryptodome==3.9.8):

      from Crypto.PublicKey import RSA
      from Crypto.Cipher import PKCS1_OAEP
    
      class Cipher:
    
      def rsa_encrypt(self, data, key_string):
          key = RSA.importKey(key_string)
          rsa_encryption_cipher = PKCS1_OAEP.new(key)
          ciphertext = rsa_encryption_cipher.encrypt(data)
          return base64.b64encode(ciphertext)
    
      def rsa_decrypt(self, data, key_string):
          data = base64.b64decode(data)
          key = RSA.importKey(key_string)
          rsa_decryption_cipher = PKCS1_OAEP.new(key)
          plaintext = rsa_decryption_cipher.decrypt(data)
          return plaintext …
    Run Code Online (Sandbox Code Playgroud)

rsa webcrypto-api pycryptodome subtlecrypto

3
推荐指数
1
解决办法
260
查看次数

标签 统计

pycryptodome ×1

rsa ×1

subtlecrypto ×1

webcrypto-api ×1