bcrypt ハッシュ生成
無料オンライン bcrypt ハッシュ生成 ツール。100% ローカル処理 — データは端末の外に出ません。
結果がここに表示されます...
入力 → ハッシュを計算
Usage Guide
bcrypt について
bcrypt は、Niels Provos と David Mazières が 1999 年に Blowfish 暗号をベースに設計したパスワードハッシュ関数です。意図的に低速で計算コストが高くなるよう設計されており、ブルートフォース攻撃を現実的でないものにします。bcrypt は世界で最も広く普及しているパスワードハッシュアルゴリズムの一つであり、Rails、Django、Laravel、Node.js(bcryptjs)などのフレームワークでネイティブサポートされています。各 bcrypt ハッシュにはランダムなソルトとコストファクターが埋め込まれており、ハッシュ文字列だけで検証が完結します。
使用手順
このツールは 2 つの操作をサポートしています:パスワードのハッシュ化(暗号化)とハッシュに対するパスワードの検証(復号化):
アルゴリズムの特徴
bcrypt にはパスワード保存に適した複数の特性があります:
コストファクター選択ガイド
適切なコストファクターを選ぶことで、セキュリティとサーバーパフォーマンスのバランスを取ります:
FAQ
Q: bcrypt の出力フォーマットとは?
A: bcrypt ハッシュは常にちょうど 60 文字で、次のように見えます: $2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/lewdBdXyXu2zXpOme.
内訳:$2b$:bcrypt バージョン識別子。12$:コストファクター。
次の 22 文字:Base64 エンコードされた 128 ビットランダムソルト。
最後の 31 文字:Base64 エンコードされた 184 ビット派生ハッシュ。
重要な特性: すべてのパラメーターが文字列に埋め込まれています — 後でパスワードを検証するための追加ストレージは不要です。
Q: bcrypt と Argon2 の比較は?
A: bcrypt(1999):計算困難、約 4 KB メモリ、中程度の GPU 耐性、普遍的なサポート。 Argon2 (2015):メモリ困難(設定可能、デフォルト 64 MB)、はるかに強い ASIC/GPU 耐性、OWASP と NIST が推奨。 bcrypt を使う場合: 既存システムの維持、または Argon2 がまだ利用できない場合。Argon2 を使う場合: すべての新規プロジェクト。
Q: bcrypt がファイルや大きなデータのハッシュに使えない理由は?
A: bcrypt には 72 バイトの入力制限があります。72 バイト目以降の文字は静かに無視されます。ファイルの整合性検証には SHA-256 または SHA-512 を使用してください。bcrypt は短い人間が入力したパスワード専用として設計されています。
Q: データベースが侵害された場合、bcrypt は安全ですか?
A: はい — bcrypt ハッシュは一方向性です。cost=12 では、単一の CPU コアが約毎秒 2〜5 ハッシュを試みることができ、強力なパスワードへの全数探索攻撃は実質的に不可能です。ただし、bcrypt は弱いパスワードを保護しません — 最低限のパスワード強度ポリシーを常に強制してください。
Q: 本番環境ではどのコストファクターを使うべきですか?
A: OWASP 2023 推奨:cost=12 をベースラインとして。本番サーバーでベンチマークを行い、ハッシュを 500 ms 未満に保つ最高のコストファクターを選択してください。cost=10 を下回らないでください。ハードウェアが改善されるたびに 2〜3 年ごとに見直してください。
Q: bcrypt を API キーやトークンの保存に使用できますか?
A: はい、注意点があります。bcrypt は 72 バイト未満で検証頻度が低い API キーやトークンのハッシュ化に適しています。高頻度の検証には、代わりに高速な SHA-256 + ソルトアプローチを使用してください。
Use Cases
推奨:ユーザーパスワードの保存
これは bcrypt の主要なユースケースです。bcrypt(cost ≥ 12)でハッシュ化し、60 文字の文字列を保存します。ログイン時に bcrypt 検証を実行します。bcrypt は Rails(has_secure_password)、Django、Laravel、Node.js(bcryptjs)で標準サポートされています。
推奨:レガシーシステムとの互換性
数百万の bcrypt ハッシュを保存するシステムでは、bcrypt を継続使用しハードウェアの改善に合わせてコストファクターを引き上げます。新しいユーザーは透過的に Argon2id にアップグレードでき、bcrypt ハッシュ($2b$ プレフィックスで識別)は引き続き正しく検証されます。
- ✅ 既存ハッシュには bcrypt を維持 — 強制的な移行は不要
- ✅ 新しいパスワードと更新されたパスワードには Argon2id を段階的に導入
- ✅ ハッシュプレフィックス検出($2b$ vs $argon2id$)で検証をルーティング
- 💡 移行の進捗を追跡するためにユーザーごとに使用されたアルゴリズムをログに記録
許容:API キーのハッシュ化
非推奨:ファイルやデータの暗号化
bcrypt は一方向ハッシュ関数であり、暗号化アルゴリズムではありません。ファイルを暗号化することはできません。また、bcrypt の 72 バイト入力制限により、ファイル内容のハッシュ化にも不適切です。ファイル暗号化には対称暗号(例: AES-256-GCM)を使用してください。
- ❌ ファイル暗号化に bcrypt を使用しないこと(可逆ではない)
- ❌ 72 バイトを超えるデータを bcrypt でハッシュしないこと
- ✅ 対称ファイル暗号化には AES-256-GCM を使用
- ✅ パスワードベースの鍵導出には Argon2id または scrypt を使用
非推奨:汎用データハッシュ
非推奨:高頻度認証
bcrypt は低速(cost=12 で約 200–500 ms)になるよう設計されています。すべての API リクエストで実行するとサーバーが過負荷になります。ログイン時に一度だけ bcrypt を使用し、その後のリクエストには署名済み JWT を発行してください。
- ❌ すべての API リクエストで bcrypt を実行しないこと
- ✅ JWT + HMAC-SHA256(ステートレス、高速なリクエストごとの認証)
- ✅ Session + Cookie(従来のサーバーサイドセッション管理)
- ✅ OAuth 2.0 / OpenID Connect(フェデレーテッドアイデンティティ、トークンベース)
ベストプラクティスのまとめ
- 既存システムのユーザーパスワード保存には bcrypt(cost ≥ 12)を使用。新規プロジェクトには Argon2id を推奨。
- 汎用データハッシュ、ファイル暗号化、72 バイトを超えるデータには bcrypt を使用しないこと。
- 本番ハードウェアでベンチマークし、ハッシュあたり 200–500 ms を目標に。2〜3 年ごとにコストファクターを増加。
- 高頻度認証シナリオでは、ログイン時にのみ bcrypt を使用し、その後 JWT またはセッショントークンを発行。
- bcrypt から Argon2id への段階的移行:既存ハッシュには bcrypt を維持し、新しいパスワードには Argon2id を使用。