ファイルをパパっと暗号化
なにか読まれたくないファイルを暗号して送りますと思った。 そりゃまぁHTTPSで送ればいいんだろうけど、
リンクを本文入れたらメール消されたり、 メールでzip添付も送れない世の中じゃ。。。世知辛い
ファイルを暗号化
ファイルを暗号化にするには、超かんたんでOpensslコマンドを使う。
openssl aes-256-cbc -e -salt -in my_file -out encrypted_my_file
ファイルを復号化
opensslでファイルを復号化することが出来る。
openssl aes-256-cbc -d -in encrypted_my_file -out
他にもオプションはある
出力ファイルをbase64にしておく
オプションに、-base64 をつければ、出来上がったファイルはBASE64の形式になる。
takuya@rena:~$ openssl aes-256-cbc -e -salt -in test -out test.en -pass file:accountImage.jpg -base64 takuya@rena:~$ cat test.en U2FsdGVkX188S3Vx9evNkKjB69oQj4+M4O9mkkha6nU=
base64 の形式なら何でもありですね。SQLでRDMSに保存するのも楽そう。
パスフレーズをファイルから取得する
どこにでもある、id_rsaを鍵にする。
takuya@rena:~$ openssl aes-256-cbc -e -salt -in test -out test.en -pass file:.ssh/id_rsa takuya@rena:~$ openssl aes-256-cbc -e -salt -in test.en -out test.de -pass file:.ssh/id_rsa
2015/08/10 訂正
pass に file:path/to/file を指定したら、ファイルの先頭行を利用するので、id_rsa を使うのは非常にやばかった。
file:pathname
the first line of pathname is the password. If the same pathname argument is supplied to -passin and -passout arguments then the first line will be used for the input password and the next line for the output password. pathname need not refer to a regular file: it could for example refer to a device or named pipe. https://www.openssl.org/docs/apps/openssl.html#file%3Apathname
たとえば、OSXのログインアカウントの写真を鍵にするには
cd dscl . -read /Users/takuya JPEGPhoto | tail -1 | xxd -r -p > accountImage.jpg openssl aes-256-cbc -e -salt -in test -out test.en -pass file:accountImage.jpg
などと出来る。鍵になるのはパスフレーズなんでもいいわけで。
たとえば、ログインアカウントの写真を鍵に使ったがこれは鍵になるファイルが取り出しはカンタンだけど、ホームディレクトリ以下ファイルを総当りから探すのは難しいという点にある。