Вот несколько способов сделать это. Стоит отметить, что если вы собираетесь использовать отдельные инструменты сжатия и шифрования, вы всегда должны сжимать их перед шифрованием, поскольку зашифрованные данные практически не сжимаются.
Эти примеры сжимают и шифруют файл с именем 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. Поскольку вывод идет в стандартный вывод, вам придется перенаправить его в файл с именем по вашему выбору. Вероятно, не самый эффективный способ сделать то, что вы просите, но aespipe - это универсальный инструмент, поэтому я подумал, что стоит упомянуть.