Вот несколько способов сделать это. Следует отметить, что если вы собираетесь использовать отдельные инструменты сжатия и шифрования, вы всегда должны сжимать их перед шифрованием, поскольку зашифрованные данные практически не сжимаются.
Эти примеры сжимают и шифруют файл с именем 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 - это универсальный инструмент, поэтому я подумал, что стоит упомянуть.
openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz