Werkzeug の generate_hashed_password がストレッチングに対応していた(のを知らなかった件)

先日ふと Werkzeug のドキュメントを読み返していたら generate_hashed_ password がストレッチングに対応していることに気付きました。

対応されたのはいつからだろうと思い、リリースを調べたら Ver 0.9 (2013年6月) で追加されていますね(今は Ver0.9.6 )全然知らなかった(汗。。

まあ、気付かなかったのはライブラリをアップデートしても今までの文字列パターン( method$salt$hash )で使用出来ていたからですね(後方互換大事)。

このブログではパスワードハッシュに generate_hashed_ password で生成したものを使い、 check_password_hash で照合しています。とりあえずストレッチング仕様のパスワードハッシュに置き換えることにします( OS X 10.10.1 Python3.4.2 で確認)

In [1]: from werkzeug import generate_password_hash

In [2]: pw_hash = generate_password_hash('default')

In [3]: pw_hash
Out[3]: 'pbkdf2:sha1:1000$hldobvVq$cf3ea3d710ddf58609f0c8ee25630e70bca8fc76'

method$salt$hash が pbkdf2:method:iterations$salt$hash になっています。これがデフォルトのようです。
ちなみに照合はこうなります

In [4]: from werkzeug import check_password_hash

In [5]: check_password_hash(pw_hash, 'default')
Out[5]: True

In [6]: check_password_hash(pw_hash, 'defaultx')
Out[6]: False

ストレッチングについてはこちらが詳しいですね
本当は怖いパスワードの話(3/4) - @IT

ちなみに前回のエントリーはこちら
[Werkzeug][Flask]FlaskをSalted Passwordsに対応させる | aoshiman.org

Flaskのスニペット
Salted Passwords | Flask (A Python Microframework)


  • このエントリーをはてなブックマークに追加
PAGE TOP