Eis algumas formas de o fazer. Uma coisa a notar é que se vai utilizar ferramentas de compressão e encriptação separadas, deve sempre comprimir antes da encriptação, uma vez que os dados encriptados são essencialmente não-compressíveis.
Estes exemplos comprimem e encriptam um ficheiro chamado clear_text
.
Usando gpg
$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress
gpg irá comprimir o ficheiro de entrada antes da encriptação por defeito, -c
significa usar a encriptação simétrica com uma palavra-passe. O ficheiro de saída será clear_text.gpg
. Um dos benefícios de utilizar gpg
é o de utilizar formatos padrão OpenPGP, pelo que qualquer software de encriptação que suporte OpenPGP será capaz de o desencriptar.
Usando mcrypt
$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress
A opção -z
comprime. Por defeito, isto produz um ficheiro chamado clear_text.gz.nc
.
Usando bcrypt
$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress
bcrypt comprime antes de encriptar por defeito, a opção -r
é para que o ficheiro de entrada não seja apagado no processo. O ficheiro de saída é chamado clear_text.bfe
por defeito.
Usando gzip
e aespipe
0x6&
$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress
aespipe é o que soa, um programa que recebe a entrada em stdin e produz dados encriptados em stdout. Não suporta compressão, pelo que se pode canalizar primeiro a entrada através do gzip. Uma vez que a saída vai para stdout, terá de a redireccionar para um ficheiro com um nome à sua escolha. Provavelmente não é a forma mais eficaz de fazer o que se pede, mas o aespipe é uma ferramenta versátil, por isso achei que valia a pena mencioná-lo.