Aqui estão algumas maneiras de fazer isso. Uma coisa a observar é que, se você usar ferramentas de compactação e criptografia separadas, sempre deverá comprimir antes da criptografia, pois os dados criptografados são essencialmente não compactáveis.
Esses exemplos compactam e criptografam um arquivo chamado clear_text
.
Usando gpg
$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress
O gpg comprime o arquivo de entrada antes da criptografia, por padrão, -c
significa usar criptografia simétrica com uma senha. O arquivo de saída será clear_text.gpg
. Um benefício do uso gpg
é o uso de formatos padrão do OpenPGP; portanto, qualquer software de criptografia que suporte o OpenPGP poderá descriptografá-lo.
Usando mcrypt
$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress
A -z
opção compacta. Por padrão, isso gera um arquivo chamado clear_text.gz.nc
.
Usando bcrypt
$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress
bcrypt compacta antes de criptografar por padrão, a -r
opção é para que o arquivo de entrada não seja excluído no processo. O arquivo de saída é chamado clear_text.bfe
por padrão.
Usando gzip
eaespipe
$ 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 parece, um programa que recebe entrada no stdin e gera dados criptografados no stdout. Ele não suporta compactação, então você pode canalizar a entrada através do gzip primeiro. Como a saída vai para o stdout, você precisará redirecioná-la para um arquivo com um nome de sua escolha. Provavelmente não é a maneira mais eficaz de fazer o que você está pedindo, mas a atualização é uma ferramenta versátil, então pensei que valeria a pena mencionar.
openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz