BCrypt照合ツール|パスワードとハッシュ値の一致を無料で瞬時にチェック
入力したパスワード(文字列)とBCryptハッシュ値が一致するか瞬時に無料で検証します。PHPのpassword_verify()と同じ仕組みで動作確認やログイン処理のデバッグに使え、$2a$・$2b$両方のハッシュ形式に対応しています。
| ハッシュ値 | |
|---|---|
| 文字列 |
一致
不一致
BCrypt照合とは
入力した平文パスワードと、既存のBCryptハッシュ値が同じ元の文字列から生成されたものかどうかを検証するツールです。PHPの password_verify() 関数と同じ仕組みで動作するため、ログイン処理の実装確認やデバッグに使えます。
BCryptハッシュはソルトを内包しているため、同じパスワードから生成しても毎回異なる文字列になります。単純な文字列比較では照合できないため、専用のアルゴリズムでソルトを取り出してから比較する必要があり、このツールはその処理を代行します。
BCrypt照合の使い方
- 文字列を入力する 照合したい平文のパスワードを入力欄に入力します。
- ハッシュ値を入力する $2a$ または $2b$ から始まるBCryptハッシュ値を貼り付けます。
- 検証ボタンを押す 一致・不一致の結果が瞬時に表示されます。
使いこなすためのヒント
- BCrypt はソルトを内包するため、ハッシュ値が毎回異なっても同じ元文字列から生成されていれば一致と判定されます。
- PHP の
password_verify($password, $hash)と同じ仕組みで検証しています。 - データベースから取得したハッシュ値と入力パスワードを照合する際は、通常の文字列比較(
==)ではなく専用の検証関数を使ってタイミング攻撃を防いでください。 - ハッシュ値が
$2a$から始まる場合も BCrypt として検証できます。
BCrypt照合の活用シーン
ログイン処理のデバッグ
データベースに保存されたハッシュ値と、想定するパスワードが一致するかをアプリのコードを介さず直接確認できます。
パスワードリセット後の動作確認
新しいパスワードで生成したハッシュ値が、意図通りの平文と一致するかをテストできます。
マイグレーション時のハッシュ検証
他システムから移行したBCryptハッシュ値が正しく機能するかを事前に確認できます。
BCryptに関する用語集
- ソルト(salt)
- ハッシュ生成時に付加するランダムな文字列。同じパスワードでも毎回異なるハッシュ値が生成される仕組みを支えています。
- password_verify()
- PHPの標準関数で、平文パスワードとハッシュ値を安全に比較するために使います。内部でソルトの取り出しを自動的に処理します。
- タイミング攻撃
- 処理時間のわずかな差から秘密情報を推測する攻撃手法。定数時間比較を行う専用関数を使うことで防げます。
- $2a$ / $2b$
- BCryptハッシュのバージョンを示す接頭辞。$2b$ は古い実装のバグを修正したバージョンで、現在推奨されています。
よくある質問
$2b$ は古い実装のバグを修正したバージョンで、現在は $2b$ の使用が推奨されています。
余談ですが ― 認証の裏側 ― ログインの「あの0.数秒」の正体
Webサービスでログインボタンを押してから結果が返ってくるまでの 0.数秒。実はこの時間の一部は、BCryptがパスワードのハッシュ計算をしている時間です。セキュリティのために「わざと」時間をかけているのです。
タイミング攻撃(Timing Attack) とは、処理時間の微妙な差を計測することで秘密情報を推測するサイドチャネル攻撃の一種です。通常の文字列比較(==)でパスワードを検証すると、文字が合致した位置によって比較時間がわずかに変わります。BCryptの検証関数は定数時間で動作するよう設計されており、この攻撃に対して安全です。
実際のWebアプリでは、ユーザーが存在しない場合でも「存在するが、パスワードが間違っている」と同じ程度の時間をかけてレスポンスを返すことが推奨されています。「ユーザーが存在しません」と「パスワードが間違っています」を区別できると、攻撃者にとって有効なユーザー名を特定するヒントになってしまうからです。