我一直在使用RSA公钥/私钥对来加密数据:
random_generator = Random.new().read
key = RSA.generate(1024, random_generator)
publickey = key.publickey()
并将其写入文件。我得到的问题是当我以字节读取任何文件时:
f = open('test','rb')
d = f.read()
enc_data = publickey.encrypt(d,32)
我将加密数据作为元组
>>> type(enc_data)
>>> <class 'tuple'>
问题是当我尝试在任何新创建的文件中写入加密文本时,我无法在任何模式下执行此操作
o = open('out','wb') #same with 'w' mode
o.write(enc_data)
显示错误:
Traceback (most recent call last):
File "<pyshell#103>", line 1, in <module>
o.write(enc_data)
TypeError: must be str, not tuple
如何保存加密数据?
答案 0 :(得分:0)
根据these docs,encrypt
函数返回一个元组,其中第二个值始终为None
。我假设这是为了支持向后兼容性。尝试:
enc_data, other = publickey.encrypt(d,32)
然后写enc_data
(这称为“密文”)
将来,明确说出您正在使用的库是个好主意。另外emcrytp
...