2016-10-04 5 views
1

en python, en utilisant le package GnuPG, est-il possible de prendre une valeur en mémoire, puis écrire un fichier crypté plutôt que d'écrire à fichier, puis chiffrer?écrire directement dans un fichier crypté en Python

J'espérais quelque chose comme ça fonctionnerait:

import gnupg 

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

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

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

J'espérais qu'il y avait un concept d'écriture comme celui-ci en boucle sur la ligne par ligne, mais je ne peux pas trouver un.

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

Idéalement, je pourrais me connecter à une base de données et sortir un fichier en écrivant directement.

Répondre

0

Il suffit d'utiliser la fonction gpg.encrypt() au lieu de encrypt_file() puis écrire dans un fichier.

0

Les documentation for the GPG.encrypt method montre que est ce que vous voulez.

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