2016-10-04 5 views
1

In Python, mit dem gnupg-Paket, ist es möglich, einen Wert im Speicher zu nehmen, dann schreiben Sie eine verschlüsselte Datei, anstatt in die Datei zu schreiben DANN verschlüsseln?Direkt in die verschlüsselte Datei in Python schreiben

Ich hatte gehofft, so etwas wie dies funktionieren würde:

import gnupg 

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

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

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

Ich hatte gehofft, ein Schreib Konzept wie diese Schleife über line-by-line es war, aber ich kann nicht finden.

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

Im Idealfall könnte ich eine Verbindung zu einer Datenbank herstellen und eine Datei ausgeben, indem ich direkt schreibe.

Antwort

0

Verwenden Sie einfach die -Funktion anstelle von encrypt_file() und dann in eine Datei schreiben.

0

Die documentation for the GPG.encrypt method zeigt, dass das was Sie wollen.

>>> 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.'