Python gnupg, размер файла симметричного шифрования больше, чем при использовании gpg в командной строке

У меня есть файл tar.gz размером 85 МБ. Когда я шифрую это с помощью gpg, размер зашифрованного файла составляет 85 МБ.

При попытке зашифровать с помощью Python размер зашифрованного файла gnupg составляет 115 МБ. Это очень странно, поскольку gnupg просто использует подпроцесс gpg для отправки аргументов. Тем не менее, есть большая разница в размере файла. Пробовал в линуксе и вин7. В чем может быть проблема?

Python 2.7.3 в Linux 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')

person vas    schedule 02.08.2015    source источник


Ответы (1)


По умолчанию зашифрованный файл создается с выводом в кодировке 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

person mhawke    schedule 02.08.2015