Help us understand the problem. What is going on with this article?

opensslコマンドで簡単なファイル暗号化

More than 3 years have passed since last update.

単純にテキストファイルを暗号化する方法はないかと思って探してみるとopensslコマンドで可能でした。おそらく多くの開発マシンやサーバーにはopensslコマンドが入っているので、汎用性は非常に高い気がしています。

こちらを主に参考にしました。
http://cpplover.blogspot.jp/2013/07/gnulinuxcli.html

opensslのサブコマンドのマニュアルの見方がわからず参照していないので、オプションなど微妙に間違っていたら教えていただけると幸いです。

準備

準備するものは以下の2つ。

  • 暗号化したい対象のテキストファイル rawtext.txt
  • パスワードpassword、もしくはパスワードファイルpassword.txt

ちなみにパスワードは1行目にずらずらっと書く必要があるようです。

これらから暗号化ファイルencrypted.txtを出力して、それをdecrypted.txtに復号します。これがrawtext.txtと一致するはず。

暗号化

パスワードを標準入力から取得する場合

$ openssl aes-256-cbc -e -in rawtext.txt -out encrypted.txt
enter aes-256-cbc encryption password: # パスワード入力
Verifying - enter aes-256-cbc encryption password: # もう一度

パスワードをファイルから読み込む場合

$ openssl aes-256-cbc -e -in rawtext.txt -out encrypted.txt -pass file:./password.txt

復号

パスワードを標準入力から取得する場合

$ openssl aes-256-cbc -d -in encrypted.txt -out decrypted.txt
enter aes-256-cbc decryption password: # パスワードを入力

パスワードをファイルから読み込む場合

$ openssl aes-256-cbc -d -in encrypted.txt -out decrypted.txt -pass file:./password.txt

簡単な説明

aes-256-cbcというのが暗号化方式の一つ。ググった感じでは、これがよく使用されている暗号化方式っぽい。暗号化方式の一覧はopenssl list-cipher-commandsで見られる。

-eというのがencrypt、つまり暗号化を表し、-dがdecryptつまり復号を表す。

-passはパスワードの読み込み先を指定する。file:filepathpathのファイルの内容を読み、env:varで環境変数$varを読む。pass:passwordと直接passwordを指定することもできるが危険なのであまりしないこと。

活用場面

Chefのencrypted data bagみたいに、公開したくない情報をgithubに上げるときに使えそう。password.txtを.gitignoreするのを忘れずに。個人的にはdotfilesリポジトリに~/.ssh/configを入れるのに使用しようかと思っている。

オマケ

「パスワード」と「パスフレーズ」の違い。この記事を書いていたら気になったので。
https://technet.microsoft.com/ja-jp/library/dd362846.aspx

ikuwow
いろんなことをしているWebエンジニアです
https://ikuwow.github.io
bm-sms
高齢社会に適した情報インフラを構築することで価値を創造し社会に貢献し続ける
https://www.bm-sms.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした