如何使用gpg加密请求帖子中的文件

时间:2015-02-04 08:54:23

标签: python file post encryption gnupg

是否可以从请求帖子加密文件?怎么样?

files = request.FILES[files]
gpg = gnupg.GPG(homedir='/home/XXXX/.gnupg')
gpg.encrypt(files) <-- This do exception

例外:

  

'InMemoryUploadedFile'对象没有属性'encode'

2 个答案:

答案 0 :(得分:0)

the documentation所述,您应该将字符串传递给encrypt(),而不是文件。 encrypt()当然试图通过尝试在参数上调用.encode()来获取编码的字符串。

您可以找到加密文件here的示例。

答案 1 :(得分:0)

我找到了解决方案:

def encrypt(self, files):
    gpg = gnupg.GPG(gnupghome='/home/XXXX/.gnupg')        
    encrypted = gpg.encrypt_file(files, recipients='mail@mail.com', passphrase='secret')
    f = tempfile.NamedTemporaryFile(delete=False)
    name = f.name
    f.write(encrypted.data)
    f.close()
    return open(name, 'r+b')      

def decrypt(self, files):
    gpg = gnupg.GPG(gnupghome='/home/XXXX/.gnupg')    
    result = gpg.decrypt(files.content).data
    return result