如何使用pycrypto将加密数据写入文件?

问题描述:

我一直在使用RSA公钥/私钥对encrpyt数据:如何使用pycrypto将加密数据写入文件?

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

'publickey.emcrytp(d,32)',真的吗? :) –

根据these docsencrypt函数返回一个元组,其中第二个值始终为None。我假设这是为了支持向后兼容性。尝试:

enc_data, other = publickey.encrypt(d,32) 

然后写enc_data(这被称为“密文”)

在未来,这将是一个好主意,明确地说,你正在使用的库。另外emcrytp ...

+0

要求1更多的价值,但我从加勒特海德重复的建议得到我的答案! :)非常感谢btw :) –