我有一个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')
答案 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)
现在输出应该是二进制的,文件大小应该更接近原始文件的大小。