Python gnupg,对称加密文件大小比在命令行上使用gpg大

时间:2015-08-02 11:34:21

标签: python encryption gnupg encryption-symmetric

我有一个85mb tar.gz文件。当我使用gpg对其进行加密时,加密文件大小为85 MB。

尝试使用Python gnupg加密时,加密文件大小为115 MB。 这很奇怪,因为gnupg只是使用子进程来gpg发送参数。文件大小仍有很大差异。 在Linux和win7中尝试过。 问题可能是什么?

Linux上的Python 2.7.3 gnupg 0.3.6

以下代码

gpg -c --cipher-algo AES256 temp.tar.gz <<< command line code.
with open(outputfolder+tarname, 'rb') as f:     
        status = gpg.encrypt_file(f, recipients=None, symmetric="AES256", output=outputfolder+tarname+'.gpg', passphrase='pass')

1 个答案:

答案 0 :(得分:0)

默认情况下,加密文件是使用ASCII装甲而非二进制输出创建的。看看生成的文件的前几行:

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1

jA0ECQMCeWOyFPPGpLVg0u0Br8cioBHzZB38LC5o14PS1I2MZsxNPwVM2tnjsd41
FXz0m28S7LERQ2Cld3Ud7tRCgcVtRtGwKCdgDHZRWDr2S7wNHgTlvBU91In8+HF9
....

可以通过向armor=False提供encrypt_file()来生成二进制输出:

with open(outputfolder+tarname, 'rb') as f:     
        status = gpg.encrypt_file(f, recipients=None, symmetric="AES256", output=outputfolder+tarname+'.gpg', passphrase='pass', armor=False)

现在输出应该是二进制的,文件大小应该更接近原始文件的大小。

参考:http://pythonhosted.org/python-gnupg/#encryption