sha512でハッシュされたsaltつきパスワードを生成するには

Pocket

 

バッチファイルにパスワードを書くときの悩み

ユーザの追加や、属性の変更をバッチファイルで処理したいことがある。
しかしこういった作業には、しばしばパスワードの操作が含まれる。
しかしパスワードを平文のまま扱うわけにもいかない。
パスワードの設定・変更をするコマンドが、暗号化されたパスワードも受け付けるようになっているのは、そのためだ。

たとえばLinuxにはchpasswdというコマンドがある。chpasswdは暗号化されたパスワードを受け付ける。
もしバッチファイルを覗かれても、パスワードが暗号化されていれば、まあ大丈夫と言える。

MD5からSHA512へ

ところで、こちらの記事でも触れたとおり、MD5は今そこにある危機であるからして、パスワードのハッシュ方法をSHA512に変えるOSもぼちぼち出てきた。
そういったOSにおいて、暗号化したパスワードでユーザ情報の操作をするには、とうぜんパスワードをSHA512で暗号化しなければならない。

ということで、ある文字列をSHA512暗号化する方法を示す。

パスワードの書式での暗号化

SHA512で暗号化だなんていうのは簡単なのだが、しかし、パスワードファイルで使われる形式での暗号化となると、ちょっと工夫が必要だ。

パスワードファイルの形式は以下の通り。

要するにこういう形式での出力をしてくれるコマンドなりスクリプトでなければならない。
代表的なものでは、opensslコマンド。

 

Opensslコマンドのつかいかた

openssl passwdという書式で使う。

 

だからたとえば、MD5形式で、saltを”SALTsalt”とし、パスワードを”test”とするならば、 以下のようにする。

しかし上述のオプション一覧を見ると分かるのだが、sha512形式には対応していない。

 

SHA512は…いまならperlとかpython

ここまで引っ張ってナニだが、一発でSHA512ハッシュしてくれるコマンドは見つけられなかった。
Linuxのmkpasswdも新しければ対応しているようなのだがまだ一般的ではない。
そこでperl, pythonを使う。
以下のようにする。

saltを”SALTsalt”とし、パスワードを”test”とする。

perl

python

 

FreeBSDにおける実際の使いどころは以下の記事にて。

[FreeBSD] 無人でのユーザ追加

おしまい。

No tags for this post.

One comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください