You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCryptodome中RSA PKCS1_OAEP加密指定SHA256报错求助

问题原因

你混用了两个独立的加密库:PyCryptodome(代码里的Cryptodome前缀)和cryptography(导入的cryptography.hazmat模块)。PyCryptodome的PKCS1_OAEP.new()方法要求传入自身库的哈希类,但你传入了cryptography库的SHA256类型,两者不兼容,导致类型错误。

另外你提到的“Python cryptography文档支持hashAlgo=SHA256”,那是cryptography库自身的PKCS1_OAEP实现的参数要求,和PyCryptodome的API规则不同。

修复方案

步骤1:替换哈希算法的导入

把cryptography库的SHA256导入,换成PyCryptodome自带的哈希类:

from Cryptodome.Hash import SHA256

步骤2:修正后的完整代码

from Cryptodome.Cipher import PKCS1_OAEP
from Cryptodome.PublicKey import RSA
from Cryptodome.Hash import SHA256
import base64

def aes_key_encryptions(data):
    key = RSA.import_key(open('rsa.public').read())
    cipher = PKCS1_OAEP.new(key, hashAlgo=SHA256)  
    encrypted_data = cipher.encrypt(data)
    base64_bytes = base64.b64encode(encrypted_data)
    base64_encrypted = base64_bytes.decode('ascii')
    return base64_encrypted

额外说明

  • 原代码里的signature命名不准确,这里改成encrypted_data,因为你执行的是加密操作而非签名。
  • 确保你的rsa.public文件内容和你提供的公钥一致,且文件路径正确。

内容的提问来源于stack exchange,提问作者Advaita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:45:52