Hatena::ブログ(Diary)

Dマイナー志向 このページをアンテナに追加 RSSフィード

2012-01-06

パスワードのハッシュに使うべきPBKDF2、Bcrypt、HMACの各言語実装一覧

いつも忘れるのでメモ。

元ネタ:Are you sure SHA-1+salt is enough for passwords?

日本語訳:「SHA-1+salt」はパスワードに十分だと思いますか?

こうしたスキームをいくつか選ぶことができる:

各選択肢はそれぞれの強みと弱みがあるが、これらは全てSHA1+saltのような汎用ハッシュのインプリメンテーションより、はるかに強力だ。

ということで、各言語での実装を調べてみた。実装が正しいかは調べてない。別実装もあるかもしれない。

言語PBKDF2BcryptHMAC
JavaBouncy Castle, PBKDF2.jarjBCryptBouncy Castle, サンプル実装
JavaScriptSJCL, crypt-js*1jsBCryptSJCL, crypt-js
PerlCrypt::PBKDF2Crypt::Eksblowfish::BcryptDigest::HMAC
PHPサンプル実装crypt($str, $hash)*2hash_hmac
Pythonpython-pbkdf2py-bcryptimport hmac
RubyOpenSSL::PKCS5, pbkdf2-rubybcrypt-ruby*3OpenSSL::HMAC, ruby-hmac

追記

おーマジっすか。知りませんでした。ということで差し替えました。

*1:SJCLの方が速いらしい

*2:CRYPT_BLOWFISHが1の場合

*3:メンテされてないため非推奨

黒川黒川 2012/10/25 16:31 記事参考になりました。ありがとうございます。
原文の追記を見るとHMACはPBMACの間違いだったみたいですよ。

Updated to add: I had accidentally put HMAC on the list of suggested schemes when I should have put PBMAC. Props to Matthew and Sagres for pointing out the error.

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証