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
相关产品推荐
相关产品推荐

