ファイルを暗号化してgzip圧縮する方法のご紹介です。
残念ながら1つのコマンドでは実現できません。少しテクニック的になりますがopensslコマンドとgzipコマンドを連携させます。
まずは暗号化をみていきましょう。
opensslコマンドでファイルを暗号化し、gzipで圧縮します。
1 2 |
[root@kamotora ~]# openssl enc -aes-256-cbc -in kamotora1 -e -iv 1234567890ABCDEF1234567890ABCDEF -K 12345678901234567890123456789012 | gzip -c > kamotora1.gz [root@kamotora ~]# |
まずはopensslのコマンド部分についてです。
「enc」はencrypt、つまり暗号化処理を行うことを示しています。
「-aes-256-cbc」ではAES-256での暗号化をすることを指定しています。
「-in」の引数として目的のファイルを指定します。
「-e」はencryption、つまり暗号化の「e」を示しています。
「-iv」は初期化ベクトル、「-K」はパスワードです。
続いてgzipの箇所ですが、標準入力で受け取った内容を「-c」で標準出力に出力しています。
それをファイルに書き込むことで、元のファイルの暗号化と圧縮を実現しています。
ちなみに、復号化の方法は以下の通りです。
1 2 |
[root@kamotora ~]# gzip -dc kamotora1.gz | openssl enc -aes-256-cbc -d -iv 1234567890ABCDEF1234567890ABCDEF -K 12345678901234567890123456789012 > kamotora1.restore [root@kamotora ~]# |
暗号化の場合と異なる点は以下の点です。
「-e」が「-d」になっている。これは「decryption」の「d」です。
またファイルを指定していた「-in」がありません。gzipコマンドを「-c」で標準出力に渡し、それをパイプで受け取っています。
最後はファイルに書き出しています。
AESの仕組み上、初期化ベクトルは暗号化時だけでなく、複合時にも必須となります。
暗号化した後に初期化ベクトルを紛失しないように気を付けましょう!