Aquí tienes algunas formas de hacerlo. Una cosa a tener en cuenta es que si vas a utilizar herramientas de compresión y encriptación separadas, siempre debes comprimir antes de encriptar, ya que los datos encriptados son esencialmente no comprimibles.
Estos ejemplos comprimen y cifran un archivo llamado clear_text
.
Usando gpg
$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress
gpg comprimirá el archivo de entrada antes de encriptarlo por defecto, -c
significa usar encriptación simétrica con una contraseña. El archivo de salida será clear_text.gpg
. Una de las ventajas de usar gpg
es que utiliza los formatos estándar de OpenPGP, por lo que cualquier software de encriptación que soporte OpenPGP podrá desencriptarlo.
Usando mcrypt
$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress
La opción -z
comprime. Por defecto, esto produce un archivo llamado clear_text.gz.nc
.
Using bcrypt
$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress
bcrypt comprime antes de encriptar por defecto, la opción -r
es para que el archivo de entrada no se borre en el proceso. El archivo de salida se llama clear_text.bfe
por defecto.
Usando gzip
y 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 es lo que parece, un programa que toma la entrada en stdin y saca los datos encriptados aes en stdout. No soporta compresión, así que puedes pasar la entrada por gzip primero. Como la salida va a stdout, tendrás que redirigirla a un archivo con un nombre de tu elección. Probablemente no sea la forma más efectiva de hacer lo que pides, pero aespipe es una herramienta versátil, así que pensé que valía la pena mencionarla.