Oto kilka sposobów, jak to zrobić. Jedną rzeczą, którą należy zauważyć jest to, że jeśli zamierzasz używać oddzielnych narzędzi do kompresji i szyfrowania, powinieneś zawsze kompresować przed szyfrowaniem, ponieważ zaszyfrowane dane są zasadniczo niekompresowalne.
Te przykłady kompresują i szyfrują plik o nazwie clear_text
.
Użycie gpg
$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress
gpg domyślnie skompresuje plik wejściowy przed szyfrowaniem, -c
oznacza użycie szyfrowania symetrycznego z hasłem. Plik wyjściowy będzie miał postać clear_text.gpg
. Jedną z zalet użycia gpg
jest to, że używa on standardowych formatów OpenPGP, więc każde oprogramowanie szyfrujące obsługujące OpenPGP będzie w stanie go odszyfrować.
Użycie mcrypt
$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress
Opcja -z
kompresuje. Domyślnie daje to plik o nazwie clear_text.gz.nc
.
Użycie bcrypt
$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress
bcrypt domyślnie kompresuje przed zaszyfrowaniem, opcja -r
jest po to, aby plik wejściowy nie został usunięty w procesie. Plik wyjściowy jest domyślnie nazywany clear_text.bfe
.
Użycie gzip
i 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 jest tym, na co wygląda, programem, który przyjmuje dane wejściowe na stdin i wypisuje zaszyfrowane dane aes na stdout. Nie obsługuje on kompresji, więc możesz najpierw przepuścić dane wejściowe przez gzip. Ponieważ dane wyjściowe trafiają na stdout, będziesz musiał je przekierować do pliku o wybranej przez siebie nazwie. Prawdopodobnie nie jest to najbardziej efektywny sposób na zrobienie tego, o co prosisz, ale aespipe jest wszechstronnym narzędziem, więc pomyślałem, że warto o nim wspomnieć.