2016-01-13 78 views
0

我一直在使用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)',真的嗎? :) –

回答

0

根據these docsencrypt函數返回一個元組,其中第二個值始終爲None。我假設這是爲了支持向後兼容性。嘗試:

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

然後寫enc_data(這被稱爲「密文」)

在未來,這將是一個好主意,明確地說,你正在使用的庫。另外emcrytp ...

+0

要求1更多的價值,但我從加勒特海德重複的建議得到我的答案! :)非常感謝btw :) –