Вот несколько способов сделать это. Следует отметить, что если вы собираетесь использовать отдельные инструменты сжатия и шифрования, вам всегда следует сжимать перед шифрованием, поскольку зашифрованные данные, по сути, не могут быть зашифрованы.
Эти примеры сжимают и шифруют файл под названием clear_text
.
Использование gpg
$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress
gpg сжимает входной файл перед шифрованием по умолчанию, -c
означает использование симметричного шифрования с паролем. Выходной файл будет clear_text.gpg
. Одним из преимуществ использования gpg
является использование стандартных форматов OpenPGP, поэтому любое шифровальное программное обеспечение, поддерживающее OpenPGP, сможет его расшифровать.
Использование mcrypt
$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress
Опция -z
сжимается. По умолчанию она выводит файл с именем clear_text.gz.nc
.
Используя bcrypt
$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress
bcrypt сжатие перед шифрованием по умолчанию, опция -r
такова, что входной файл не удаляется в процессе шифрования. Выходной файл по умолчанию называется clear_text.bfe
.
Использование gzip
и aespipe
$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress
aespipe - это то, как это звучит, программа, которая принимает входные данные в stdin и выводит зашифрованные данные в stdout. Она не поддерживает сжатие, поэтому вы можете сначала пропустить вход через gzip. Поскольку выходные данные поступают в stdout, вам придется перенаправить их в файл с именем по вашему выбору. Возможно, это не самый эффективный способ сделать то, о чем вы просите, но aespipe - это универсальный инструмент, поэтому я подумал, что о нем стоит упомянуть.