Aquí hay algunas maneras de hacer esto. Una cosa a tener en cuenta es que si va a utilizar herramientas de compresión y cifrado separadas, siempre debe comprimir antes del cifrado, ya que los datos cifrados son esencialmente no comprimibles.
Estos ejemplos comprimen y encriptan un archivo llamado clear_text
.
Utilizando gpg
$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress
gpg comprimirá el archivo de entrada antes del cifrado de forma predeterminada, -c
significa usar cifrado simétrico con una contraseña. El archivo de salida será clear_text.gpg
. Una ventaja de usar gpg
es que utiliza formatos estándar de OpenPGP, por lo que cualquier software de cifrado que admita OpenPGP podrá descifrarlo.
Utilizando mcrypt
$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress
La -z
opción comprime. Por defecto, esto genera un archivo llamado clear_text.gz.nc
.
Utilizando bcrypt
$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress
bcrypt comprime antes del cifrado de forma predeterminada, la -r
opción es que el archivo de entrada no se elimine en el proceso. El archivo de salida se llama clear_text.bfe
por defecto.
Usando gzip
yaespipe
$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress
aespipe es lo que parece, un programa que toma datos en stdin y genera datos cifrados aes en stdout. No admite compresión, por lo que puede canalizar la entrada a través de gzip primero. Como el resultado va a stdout, deberá redirigirlo a un archivo con el nombre que elija. Probablemente no sea la forma más efectiva de hacer lo que está pidiendo, pero aespipe es una herramienta versátil, así que pensé que valía la pena mencionarlo.
openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz