我正在尝试对一些RSA加密数据进行base64编码,但是RSA加密返回一个元组,并且base64编码需要一个类似字节的对象。
文件“ C:\ PATH \ AppData \ Local \ Continuum \ anaconda3 \ lib \ base64.py”,以b64encode编码= 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))
答案 0 :(得分:2)
在return base64.standard_b64encode(rsa_encrypt(data))
行中,像这样添加0
的索引:
return base64.standard_b64encode(rsa_encrypt(data)[0])
它将解决您的问题。
问题是rsa_encrypt
将返回包含两个项目的元组。第一项是与明文(字符串或长整数)相同类型的密文。第二项始终为“无”。
有关更多信息,请参见Here。