Linuxでファイルを暗号化

DBのダンプデータを別サーバに転送したり、テープなどの他メディアに書き出す場合にファイルの暗号化をしたかったので調べたらopensslコマンドでできるみたい。

暗号化する対象のファイルを作成
$ vi hoge.txt
aaaaaaaa
ggggggggggg

暗号化するパスワードの文字列をpasswd.txtファイルに記載
$ vi passwd.txt
hogehoge


暗号化
$ openssl enc -e -aes256 -in hoge.txt -out hoge.txt.cipher -pass file:./passwd.txt


暗号化ファイルの中身を確認
$ cat hoge.txt.cipher
Salted__r??????????H}?????? Y??]????f??????f????????lm}A??????


復号処理
$ openssl enc -d -aes256 -in hoge.txt.cipher -out hoge.txt.plain -pass file:./passwd.txt

復号した内容を確認
$ cat hoge.txt.plain
aaaaaaaa
ggggggggggg

encオプションは必ずつけます。
暗号化は-eオプション、復号は-dオプションをつけます。
オプション-aes256は暗号化方式です。利用する暗号方式は下記コマンドで確認できます。

openssl cipher

オプション-passをつけないと標準入力でパスワードを聞いてきます。バッチで暗号化処理をする場合は暗号化文字列を-passで指定するのですが、今回はファイルの中にパスワードを記述し、それを利用するようにしました。

参考
http://blog.livedoor.jp/imsut/archives/50159135.html
http://oshiete1.goo.ne.jp/qa1085292.html