Python RSA公钥加密给出错误?

2024-04-29 06:32:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用RSA公钥加密JSON数据,用私钥解密, 我的代码

from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA
import binascii

final_data = { 'custom_folder': {'check': 'test'} }

data = json.dumps(final_data).encode('utf-8') # converted into bytes

keys = RSA.generate(2048)
pub_key = keys.publickey().exportKey('PEM') # generates public key
pri_key = keys.exportKey('PEM') # generate private key

encryptor = PKCS1_OAEP.new(key=keys) # using keys variable
encrypted = encryptor.encrypt(data)
print("Encrypted:", binascii.hexlify(encrypted))

当使用变量keys完成时,它会像这样加密数据

Encrypted: b'46bdca64f486....'

但是我想用我的公钥来加密和发送数据,而在另一端,当我用pub_key替换keys时,只使用私钥进行解密,生成这个错误

encryptor = PKCS1_OAEP.new(key=pub_key) # replaced keys with public key

# Error geenrated
Traceback (most recent call last):
  encrypted = encryptor.encrypt(data)
  modBits = Crypto.Util.number.size(self._key.n)
AttributeError: 'bytes' object has no attribute 'n'

如何仅使用公钥进行加密


Tags: 数据keyfromimportdatakeyscryptorsa