それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

OpenSSLで簡単にファイルを暗号化・復号化する(コマンド一発)

openssl コマンドでファイルを暗号化します。

ファイルを暗号化してパスワードをつけたい場合、一番お手軽なのはWindowsExcelのパスワードですが、 一般のファイルで、ファイルにパスワードをつけたい場合は、opensslをコマンドから使うのが手軽です。

openssl コマンドでファイルを容易く暗号化出来る

ファイルを暗号化するには、とてもシンプルにopenssl を使うのが楽ですよね

ファイルの暗号化

次の例では、ファイル(test.json)を暗号化しています。 ここでは、パスワード($PLAIN_TEXT_PASS)を鍵として使います。

openssl enc -e  -aes-256-cbc -salt -pbkdf2 -pass pass:$PLAIN_TEXT_PASS -in test.json  -out test.json.enc

ファイルの復号化

次の例では、ファイル(test.json)を復号化しています。

openssl enc -d  -aes-256-cbc -salt -pbkdf2 -pass pass:$PLAIN_TEXT_PASS -in test.json.enc -out test.json

openssl enc を使う

ファイルをAESで暗号化するには enc を使う。

openssl enc  オプション

じつは、openssl はサブコマンド方式なので、次のようになっています。enc はサブコマンドの一つです。

openssl サブコマンド オプション

オプションの解説

引数 意味
enc 対象鍵(パスフレーズ)で暗号化・復号化
-e 暗号化処理を指定
-d 復号化処理を指定
-salt slatを使うことでバイナリからの憶測を困難に
-pass パスフレーズをどこから取るか (指定なしはプロンプト )

パスフレーズの与え方

  • pass:password プレインテキストで直書く
  • env:var 環境変数から
  • file:pathname ファイルから
  • fd:number ファイルディスクリプタから
  • stdin 標準入力から
パスフレーズの与え方の例

よく使いそうなのは次の3つでしょうね。

プレインテキストで

openssl enc -e  -aes-256-cbc -salt -pass pass:秘密秘密

環境変数から

export my_pass=秘密秘密
openssl enc -e  -aes-256-cbc -salt -pass env:my_pass

ファイルから

echo  秘密秘密 > my_pass_file
openssl enc -e  -aes-256-cbc -salt -pass file:my_pass_file

詳しくは、openssl のPASSWORD ARGUMENTSの章を参考にすること

2018-11-26

検索キーワードにうまくマッチしないのでエントリ書き換え、。

2020-12-16

openssl が -pbkdf2 をつけないと deprecated というので追加した。

参考資料

  • man enc
  • man openssl

みんな大好き!man ページ

download-pdf

download-pdf