2016-10-04 75 views
1

在python中,使用gnupg包,是否可以在內存中取值,然後將其寫入加密文件而不是寫入文件THEN加密?用Python直接寫入加密文件

我希望像這樣的工作:

import gnupg 

gpg = gnupg.GPG(gnupghome='keydirectory') 

l = [['a', '1'], ['b', '2'], ['c', '3']] 

gpg.encrypt_file(l, recipients=['[email protected]'], output='encryptedfile.asc') 

我希望有這樣一個概念寫入遍歷行由行,但我不能找到一個。

with open('regularfile.txt', 'w') as file: 
    for i in l: 
    file.write(i) 

理想情況下,我可以連接到數據庫並通過直接寫入輸出文件。

回答

0

只需使用gpg.encrypt()函數而不是encrypt_file()然後寫入文件。

0

documentation for the GPG.encrypt method表明,這是你想要的。

>>> import gnupg 

>>> gpg = gnupg.GPG(homedir="doctests") 
>>> key_settings = gpg.gen_key_input(
...   key_type='RSA', 
...   key_length=1024, 
...   key_usage='ESCA', 
...   passphrase='foo') 
>>> key = gpg.gen_key(key_settings) 

>>> message = "The crow flies at midnight." 
>>> encrypted = str(gpg.encrypt(message, key.printprint)) 
>>> assert encrypted != message 
>>> assert not encrypted.isspace() 

>>> decrypted = str(gpg.decrypt(encrypted)) 
>>> assert not decrypted.isspace() 
>>> decrypted 
'The crow flies at midnight.'