直接在Python中写入加密文件

时间:2016-10-04 22:08:29

标签: python gnupg

在python中,使用gnupg包,是否可以在内存中取值,然后将其写入加密文件而不是写入文件THEN加密?

我希望这样的东西能起作用:

import gnupg

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

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

gpg.encrypt_file(l, recipients=['test@test.com'], output='encryptedfile.asc')

我希望有一个像这样的写概念逐行循环,但我找不到一个。

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

理想情况下,我可以通过直接写入连接到数据库并输出文件。

2 个答案:

答案 0 :(得分:0)

只需使用gpg.encrypt()函数代替encrypt_file(),然后写入文件。

答案 1 :(得分: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.'