Bcrypt検証ツール
パスワードがbcryptハッシュと一致するか確認します。パスワードと$2a$、$2b$、または$2y$ハッシュを貼り付けると、ツールが文字列からソルトとコストを読み取り、ハッシュを再計算して、一致するかどうかを返します。開発者がログインの問題をデバッグしたり、データベース移行を確認したり、PHP、Node.js、Pythonのハッシュをテストしたりするのに役立ちます。コストが12を超えるハッシュは拒否され、パスワードが表示されることはありません。
よくある質問
bcryptの検証はどのように行われますか?
ツールはハッシュ文字列からバージョン、コスト、ソルトを読み取り、同じ設定でパスワードをハッシュ化して、結果を保存済みのハッシュと比較します。完全に一致すれば「一致」、それ以外は「不一致」と表示されます。
どのハッシュ形式に対応していますか?
このツールは、$2a$、$2b$、$2y$の接頭辞、2桁のコスト、53文字のソルトとハッシュを含むモジュラー暗号形式に対応しています。対象はPHP password_hash、Node.js bcryptとbcryptjs、Python bcrypt、Spring Securityです。
ハッシュが拒否されるのはなぜですか?
ハッシュは正確に60文字で、形式は$2b$10$の後にbcryptの文字セットからなる53文字が続く必要があります。データベースのカラムで途中までしか保存されていないか、引用符で囲まれていないか確認してください。サービスの処理速度を保つため、コストが12を超えるハッシュは拒否されます。
既知の例を試せますか?
公開されているjBCryptのテストベクトル$2a$06$If6bvum7DFjUnE9p2uDeDu0YHzrHM6tf.iqN8.yx.jNN1ILEf7h0iは、パスワードabcに対応します。両方を入力すると「一致」と表示され、それ以外のパスワードでは「不一致」と表示されます。
コスト上限が12なのはなぜですか?
ハッシュの検証には作成と同じだけのコストがかかり、コストが1段階上がるごとに処理時間は2倍になります。12を超えると数秒かかることがあるため、サーバーを占有しないようツールで拒否しています。
Verifierはパスワードを表示または保存しますか?
いいえ。レスポンスに含まれるのはハッシュと判定結果のみで、パスワードは含まれません。ログへの記録や保存も行われません。
パスワードの最大長はありますか?
bcryptが読み取るのはパスワードの先頭72バイトまでです。このツールは切り詰めずに、それより長いパスワードを拒否します。ハッシュ作成時にシステムが長いパスワードを切り詰めていた場合は、先頭72バイトだけを入力してください。
$2a$、$2b$、$2y$の違いは何ですか?
これらは、古い実装のバグに対する修正を示しています。$2y$はPHPのcrypt_blowfishの修正に由来し、$2b$は長いパスワードに関するOpenBSDの修正に由来します。72バイト以下の有効なパスワードでは同じハッシュが生成されるため、このツールは3種類すべてを検証できます。
ここで他のアルゴリズムのハッシュも検証できますか?
いいえ。このツールが確認できるのはbcryptハッシュのみです。$argon2で始まる文字列にはArgon2 Verifierを使ってください。
新しく作成したbcryptハッシュが保存済みのものと一致しないのはなぜですか?
bcryptハッシュには毎回新しいランダムなソルトが使われるため、同じパスワードでも生成されるハッシュ文字列は異なります。そのため、検証では2つのハッシュを比較せず、保存済みのソルトを使って再計算します。