bcrypt ハッシュ生成

無料オンライン bcrypt ハッシュ生成 ツール。100% ローカル処理 — データは端末の外に出ません。

General
Password Hashing / KDF
Specialized
Deprecated
出力

結果がここに表示されます...

入力 ハッシュを計算

Usage Guide

bcrypt について

bcrypt は、Niels Provos と David Mazières が 1999 年に Blowfish 暗号をベースに設計したパスワードハッシュ関数です。意図的に低速で計算コストが高くなるよう設計されており、ブルートフォース攻撃を現実的でないものにします。bcrypt は世界で最も広く普及しているパスワードハッシュアルゴリズムの一つであり、Rails、Django、Laravel、Node.js(bcryptjs)などのフレームワークでネイティブサポートされています。各 bcrypt ハッシュにはランダムなソルトとコストファクターが埋め込まれており、ハッシュ文字列だけで検証が完結します。

実績のある標準: bcrypt は 25 年以上にわたって本番環境で使用されており、パスワード保存の信頼できる選択肢であり続けています。 OWASP は 最小コストファクター 10 を推奨し、cost=12 を 2023 年のベースラインとしています。新規プロジェクトには Argon2id が推奨されますが、bcrypt は既存システムにおいて引き続き完全に信頼できます。

使用手順

このツールは 2 つの操作をサポートしています:パスワードのハッシュ化(暗号化)とハッシュに対するパスワードの検証(復号化):

1. ハッシュモード(暗号化)「暗号化」モードを選択し、入力欄にパスワードを入力して「ハッシュを計算」をクリック
2. ハッシュを取得$2b$12$... のような 60 文字の bcrypt 文字列が出力されます — コピーしてデータベースに保存してください
3. 検証モード(復号化)「復号化」モードを選択し、入力欄に password|$2b$12$...(パイプ区切り)を入力して「復号化」をクリック
4. 結果を確認パスワードが正しければ「✓ Password matches」が返され、一致しない場合はエラーメッセージが表示されます
プライバシー保護: すべての bcrypt 計算は WebAssembly を使用してブラウザ上で完全に実行されます。データはサーバーに送信されることはありません — 完全オフライン処理です。

アルゴリズムの特徴

bcrypt にはパスワード保存に適した複数の特性があります:

意図的な低速性Blowfish 鍵スケジュールは計算コストが高く、各ハッシュ試行を遅くすることでブルートフォース攻撃を高コストにします
組み込みソルト各ハッシュには固有の 128 ビットランダムソルトが含まれており、レインボーテーブル攻撃や同一パスワード攻撃を防ぎます
調整可能なコストファクターコストファクター(4–31)が処理量を制御します:1 増加するごとに計算時間が 2 倍になり、ハードウェアの進歩に対応できます
GPU 耐性Blowfish 鍵スケジュールのメモリアクセスパターンにより、MD5 や SHA-256 などの単純なハッシュ関数と比べて GPU 並列処理が制限されます
自己完結型ハッシュ60 文字の出力($2b$12$[22 文字ソルト][31 文字ハッシュ])には検証に必要なすべてのパラメーターが含まれています — 追加のメタデータは不要です
Argon2 との比較における制限: bcrypt は計算中に約 4 KB のメモリしか使用しないため、メガバイト単位のメモリを必要とする Argon2 と比べて ASIC やカスタムハードウェア攻撃への耐性が著しく低くなります。新規プロジェクトには Argon2id を推奨します。bcrypt は既存システムの維持に引き続き適しています。

コストファクター選択ガイド

適切なコストファクターを選ぶことで、セキュリティとサーバーパフォーマンスのバランスを取ります:

コスト 10OWASP 最低基準(2023)。現代のサーバーで約 100 ms。低トラフィックサイトやリソース制約のある環境に適しています
コスト 12OWASP 2023 ベースライン推奨。約 400 ms。ほとんどの Web アプリケーションでセキュリティとパフォーマンスの良いバランス
コスト 14約 1.5 秒。金融・医療などの機密性の高いアプリケーション向けの高セキュリティ。UI ブロッキングを避けるため非同期処理が必要になる場合があります
コスト 31(最大)理論上の最大値 — 計算に数時間かかります。本番環境では絶対に使用しないでください;オフラインアーカイブやデモ目的のみ
チューニングのヒント: 本番ハードウェアでベンチマークを行い、ハッシュあたり 200–500 ms を目標にしてください。CPU の進歩に合わせて、同じ経過時間を維持するためにコストファクターを定期的に増加させてください。新しいハッシュは更新されたコストを使用でき、既存のハッシュはコストがハッシュ文字列自体に保存されているため引き続き検証可能です。

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)で標準サポートされています。

Recommended Configuration:
  • ✅ bcrypt(cost ≥ 12、広くサポート — 既存システムに推奨)
  • Argon2id(新規プロジェクトに推奨)
  • PBKDF2-SHA256(≥ 600k イテレーション、FIPS 準拠環境)
  • ❌ パスワードに SHA-256、MD5 などの汎用ハッシュを使用しないこと
推奨:レガシーシステムとの互換性

数百万の bcrypt ハッシュを保存するシステムでは、bcrypt を継続使用しハードウェアの改善に合わせてコストファクターを引き上げます。新しいユーザーは透過的に Argon2id にアップグレードでき、bcrypt ハッシュ($2b$ プレフィックスで識別)は引き続き正しく検証されます。

Recommended Configuration:
  • ✅ 既存ハッシュには bcrypt を維持 — 強制的な移行は不要
  • ✅ 新しいパスワードと更新されたパスワードには Argon2id を段階的に導入
  • ✅ ハッシュプレフィックス検出($2b$ vs $argon2id$)で検証をルーティング
  • 💡 移行の進捗を追跡するためにユーザーごとに使用されたアルゴリズムをログに記録
許容:API キーのハッシュ化

bcrypt はデータベース保存前に API キーをハッシュ化できます。大規模なリクエストごとの検証には、高速な HMAC-SHA256 スキームまたはキーの SHA-256 ハッシュを優先してください。

Recommended Configuration:
  • ✅ bcrypt(cost=10–12、低頻度検証に適切)
  • SHA-256 + ソルト(高速、高エントロピーキーに適切)
  • ✅ HMAC-SHA256(リクエストごとのトークン署名に)
  • 💡 高速ルックアップのためにデータベースインデックスとしてハッシュプレフィックス(最初の 8 文字)を使用
非推奨:ファイルやデータの暗号化

bcrypt は一方向ハッシュ関数であり、暗号化アルゴリズムではありません。ファイルを暗号化することはできません。また、bcrypt の 72 バイト入力制限により、ファイル内容のハッシュ化にも不適切です。ファイル暗号化には対称暗号(例: AES-256-GCM)を使用してください。

Recommended Configuration:
  • ❌ ファイル暗号化に bcrypt を使用しないこと(可逆ではない)
  • ❌ 72 バイトを超えるデータを bcrypt でハッシュしないこと
  • ✅ 対称ファイル暗号化には AES-256-GCM を使用
  • ✅ パスワードベースの鍵導出には Argon2id または scrypt を使用
非推奨:汎用データハッシュ

bcrypt は汎用データ整合性チェックには遅すぎます。整合性検証には SHA-256 または SHA-512 を使用してください。

Recommended Configuration:
  • ❌ データ整合性チェックやコンテンツハッシュに bcrypt を使用しないこと
  • SHA-256(汎用整合性ハッシュ)
  • ✅ BLAKE2b(高速暗号ハッシュ)
  • ✅ SHA-3 / SHA-512(より高いセキュリティマージン)
非推奨:高頻度認証

bcrypt は低速(cost=12 で約 200–500 ms)になるよう設計されています。すべての API リクエストで実行するとサーバーが過負荷になります。ログイン時に一度だけ bcrypt を使用し、その後のリクエストには署名済み JWT を発行してください。

Recommended Configuration:
  • ❌ すべての 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 を使用。

ディスカッション&フィードバック

0件のコメント
自分