回答:
このタスクにunix-philosophyを適用する必要があります:各タスクに1つのツール。
ターリングと圧縮がジョブであるtar
とgzip
かbzip2
、暗号化は、どちらかのための仕事ですgpg
かopenssl
。
暗号化
% tar cz folder_to_encrypt | \
openssl enc -aes-256-cbc -e > out.tar.gz.enc
復号化
% openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz
またはgpgを使用
% gpg --encrypt out.tar.gz
openssl-variantは対称暗号化を使用しているため、受信者に使用された「パスワード」(別名「鍵」)を伝える必要があります。gpg-variantは対称暗号化と非対称暗号化の組み合わせを使用します。受信者のキーを使用して(つまり、パスワードをだれかに伝える必要はありません)、セッションキーを作成し、そのキーでコンテンツを暗号化します。
zip(または7z)ルートを使用する場合:基本的にopenssl-variantと同じであるため、受信者にパスワードを通知する必要があります。
openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
ファイルをパスワードで保護するだけの場合は、コマンドラインからhand zipユーティリティを使用します
zip -e <file_name>.zip <list_of_files>
-eは、zipユーティリティに、上記のファイルを暗号化するように要求します
作業例:
$ touch file_{0,1}.txt # creates blank files file_0 & file_1
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*
これを行ういくつかの方法があります。注意すべきことは、暗号化されたデータは本質的に非圧縮であるため、別個の圧縮ツールと暗号化ツールを使用する場合は、常に暗号化の前に圧縮する必要があるということです。
これらの例では、というファイルを圧縮および暗号化しますclear_text
。
を使用して gpg
$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress
gpgは、デフォルトで暗号化の前に入力ファイルを圧縮し-c
ます。これは、パスワードで対称暗号化を使用することを意味します。出力ファイルはになりますclear_text.gpg
。使用する利点の1つgpg
は、標準のOpenPGP形式を使用することです。そのため、OpenPGPをサポートする暗号化ソフトウェアはすべて解読できます。
を使用して mcrypt
$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress
-z
オプションが圧縮されます。デフォルトでは、これはというファイルを出力しますclear_text.gz.nc
。
を使用して bcrypt
$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress
bcryptは、デフォルトで暗号化する前に圧縮します。この-r
オプションは、プロセスで入力ファイルが削除されないようにするものです。出力ファイルはclear_text.bfe
デフォルトで呼び出されます。
とを使用gzip
して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は、stdinで入力を受け取り、stdoutでaes暗号化データを出力するプログラムです。圧縮をサポートしていないため、最初にgzipを介して入力をパイプ処理できます。出力はstdoutに送られるため、自分で選択した名前のファイルにリダイレクトする必要があります。おそらくあなたが求めていることをする最も効果的な方法ではありませんが、aespipeは汎用性の高いツールなので、言及する価値があると思いました。
7zipを使用して、パスワードで保護されたアーカイブを作成できます。次の方法で、コマンドライン(またはスクリプト)でパスワードを指定できます。
7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt
7zipは、次のようにSTDINから読み取ることもできます。
cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z
zipファイルを使用することが必須である場合は、-t<type>
パラメーター(例-tzip
)を試してみることをお勧めします。
tar、gzip、bzip2のいずれもパスワード保護をサポートしていません。zipなどの圧縮形式を使用するか、GnuPGなどの別のツールで暗号化してください。
-r
。
openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz