将元组中的元素转换为类似字节的对象

问题描述 投票:4回答:1

我正在尝试base64编码一些RSA加密数据,但RSA加密返回一个元组,base64编码需要一个类似字节的对象。

文件“C:\ PATH \ AppData \ Local \ Continuum \ anaconda3 \ lib \ base64.py”,第58行,b64encode encoded = binascii.b2a_base64(s,newline = False)

TypeError:需要类似字节的对象,而不是'tuple'

我正在寻找建议以最好的方式解决这个问题。

from Crypto.Cipher import AES
from Crypto.PublicKey import RSA

def rsa_encrypt(data):
    return pub_keyObj.encrypt(data, 32)

def rsa_encrypt_base64(data):
    return base64.standard_b64encode(rsa_encrypt(data))


encrypted_data = aes_encode(data, key, iv) #AES encoding is working fine
print("EncryptedString: ", rsa_encrypt_base64(encrypted_data))
python python-3.x encryption cryptography rsa
1个回答
2
投票

在这行return base64.standard_b64encode(rsa_encrypt(data))中,添加0的索引,如下所示:

return base64.standard_b64encode(rsa_encrypt(data)[0])

它会解决你的问题。

问题是rsa_encrypt将返回一个包含两个项目的元组。第一项是与明文相同类型的密文(字符串或长整数)。第二项始终为无。

有关更多信息,请参阅Here

© www.soinside.com 2019 - 2024. All rights reserved.