bcryptパスワードハッシュを生成・検証します。ワークファクターとアルゴリズムを設定。
CSPRNGを使用してランダムな128ビット(16バイト)ソルトが生成されます。ソルトはレインボーテーブル攻撃を防ぎます — 同じパスワードでも異なるハッシュが生成されます。
Eksblowfishアルゴリズムが2^n回のイテレーション(nはコスト係数)を実行します。コストを2倍にすると計算時間も2倍になります — ブルートフォース攻撃を比例的に難しくします。
出力にはすべてがエンコードされます:$2b$12$[22文字ソルト][31文字ハッシュ]。「$2b$12$」プレフィックスはbcryptにcost=12を使用するよう伝えます。別のソルト列は必要ありません。
$2b$12$eImiTAiTAi25sDB8iBjEJfF2PbO0oagzXCgKCQfHIFnOSuJl.J2
$2b$アルゴリズムバージョン(2a、2b、2y)
12$コスト係数(2^12 = 4,096ラウンド)
22文字Base64エンコードソルト(128ビット)
31文字Base64エンコードハッシュ(184ビット)
| コスト | イテレーション数 | おおよその時間 | 推奨 |
|---|---|---|---|
| 10 | 1,024 | ~50-100ms | 新規アプリケーションの最小値 |
| 11 | 2,048 | ~100-200ms | 高トラフィックAPIに適切 |
| 12 | 4,096 | ~200-400ms | 推奨デフォルト(2025) |
| 13 | 8,192 | ~400-800ms | 高セキュリティアプリケーション |
| 14 | 16,384 | ~800ms-1.6s | 最大実用コスト |
現代のサーバーCPUでの概算時間。必ずターゲットハードウェアでベンチマークしてください。
以下もご参照ください: ハッシュジェネレーター MD5、SHA-1、SHA-256、SHA-512などの暗号化ハッシュ関数に。
bcryptはNiels ProvosとDavid Maziéresが1999年にOpenBSD向けに設計したパスワードハッシュ関数です。MD5やSHAと異なり、bcryptは意図的に低速でCPU集約的であり、ブルートフォース攻撃を非実用的にします。ソルトを自動的に組み込み、レインボーテーブル攻撃を防ぎます。すべてのパスワード保存にbcrypt(またはArgon2)を使用してください — 平文や高速ハッシュ(MD5/SHA)でパスワードを保存しないでください。
コスト係数(ワークファクター)はbcryptの速度を制御します。1増えるごとに計算時間が2倍になります。ユーザー認証では、サーバーハードウェアで100-300msのハッシュ時間を目標にしてください。12から始めてベンチマークし、ログイン時間を500ms以下に保てる最大値を使用してください。高いほど安全ですが遅くなります。コスト10は2025年の新規アプリケーションの最低推奨値です。
どちらも現代的なパスワードハッシュアルゴリズムです。bcryptは実績があり(25年以上)広くサポートされています。Argon2はPassword Hashing Competition(2015)で優勝し、メモリ集約性を使用してGPU攻撃に対してより耐性があります。Argon2id(推奨バリアント)はArgon2iとArgon2dを組み合わせ、サイドチャネル攻撃とGPU攻撃の両方に耐性を持ちます。新しいアプリケーションにはArgon2idが推奨されます。
このツールはどのbcryptライブラリとも互換性のある標準bcryptハッシュを生成します。ハッシュ処理はbcryptjsライブラリを使用してブラウザ内で完全に実行されます — パスワードはサーバーに送信されません。ただし、本番アプリケーションでは常にサーバー側でパスワードハッシュを生成してください。クライアント側のデモは学習とテスト目的のみです。
すべてのハッシュ処理はブラウザ内でローカルに行われます。パスワードは送信・保存されません。