bcryptハッシュ生成・検証ツール
開発者ツールbcrypt生成ツールは、パスワードをbcryptアルゴリズム(ランダムなsaltと調整可能なcost係数)でハッシュ化し、パスワードが指定したハッシュと一致するかを検証する開発者向けツールです。
このページはAIの支援で翻訳され、まだ専門家によるレビューを完了していません。重要な判断の前に、引用元をご確認ください。
概要
bcryptは、Blowfish暗号を基に1999年に設計されたパスワードハッシュ関数で、総当たり攻撃のコストを高めるために意図的に遅くしてあります。cost係数が1増えるごとに計算量は2倍になり、各ハッシュにはランダムなsaltが埋め込まれるため、同じパスワードでも毎回異なるハッシュになります。このツールはbcryptjsライブラリをブラウザ内で実行するので、パスワードがデバイスの外に出ることはありません。開発中のテストアカウントのハッシュ生成や、データベースに保存されたハッシュの確認に使ってください。
使い方
- 1生成モードでは、パスワードとcost(ラウンド数)を選んでハッシュを作成します。
- 2検証モードでは、パスワードと既存のbcryptハッシュを入力します。
- 3生成されたハッシュをコピーするか、一致結果を確認します。
参照表
| 部分 | 意味 |
|---|---|
| $2b$ | アルゴリズム識別子(bcryptの最新版) |
| 10$ | cost — 反復回数 2^10 = 1,024回 |
| 次の22文字 | 128ビットのランダムなsalt(base64エンコード) |
| 最後の31文字 | 184ビットのハッシュ出力(チェックサム) |
出典・基準
- A Future-Adaptable Password Scheme (bcrypt) - USENIX
- OWASP Password Storage Cheat Sheet - OWASP
- MDN Web Docs: Client-side web APIs - MDN Web Docs
よくある質問
入力したパスワードはサーバーに送信されますか?
いいえ。bcryptjsライブラリはブラウザ内で実行されるため、ハッシュ化も検証もローカルで処理されます。パスワードとハッシュが送信・保存されることはありません。それでも、共有端末や画面共有中に本番用のパスワードを入力するのは避けてください。
同じパスワードなのに毎回ハッシュが違うのはなぜですか?
ハッシュごとに新しいランダムなsaltが生成され、埋め込まれるためです。検証時はハッシュ文字列内に保存されたsaltを再利用するので、どのハッシュでも正しく比較できます。
cost(ラウンド数)はいくつにすべきですか?
一般的には10〜12が推奨されます。1増えるごとに時間が2倍になるため、サーバーのハードウェアでハッシュ1回あたり約100〜300msになるように調整するとよいでしょう。
パスワードの長さに制限はありますか?
bcryptは入力の最初の72バイトのみを使い、超過分は黙って無視します。このツールはUTF-8で72バイトを超えるパスワードの場合に警告を表示します。