bcryptハッシュ生成・検証ツール
設定可能なコスト係数(ラウンド4-15)でbcryptパスワードハッシュを生成し、プレーンテキストのパスワードが既存のbcryptハッシュと一致するか検証します。ハッシュ構造の分析、リアルタイムセキュリティメーター、コスト対速度の推定、およびバリアント($2a$、$2b$、$2y$)の解説機能が含まれています。
広告ブロッカーにより広告が表示できません
MiniWebtool は広告収益で無料提供しています。このツールが役に立ったら、Premium(広告なし+高速)をご利用いただくか、MiniWebtool.com を許可リストに追加して再読み込みしてください。
- または Premium(広告なし)にアップグレード
- MiniWebtool.com の広告を許可してから再読み込みしてください
bcryptハッシュ生成・検証ツール
bcryptハッシュ生成・検証ツールへようこそ。この無料オンラインツールでは、設定可能なコスト要素を使用して、暗号的に安全な bcrypt パスワードハッシュを生成したり、プレーンテキストのパスワードが既存の bcrypt ハッシュと一致するか検証したりできます。データベースへのシード作成、ログインフローのデバッグ、システム間でのユーザー移行、あるいは適応型パスワードハッシュについての学習など、どのような用途でも即座に結果を表示し、さらに bcrypt の 60 文字のハッシュ形式がどのように構成されているかを視覚的に分解して解説します。
bcrypt とは何ですか?なぜ使用するのですか?
bcrypt は Blowfish 暗号に基づいた適応型パスワードハッシュ関数で、1999年に Niels Provos と David Mazières によって設計されました。SHA-256 や MD5 などの高速な暗号ハッシュとは異なり、bcrypt は意図的に低速に作られており、ハードウェアの進化に合わせて調整可能なコスト要素(計算量)が含まれています。すべての bcrypt ハッシュには一意のランダムなソルトが組み込まれており、攻撃者が計算済みのレインボーテーブルを使用することを防ぎます。OWASP は、現代のウェブアプリケーションでユーザーの資格情報を保存するための許容可能な 4 つのパスワードハッシュアルゴリズムの 1 つとして bcrypt を推奨しています。
コスト要素:bcrypt セキュリティの核心
コスト要素(ワークファクターやラウンド数とも呼ばれます)は、ハッシュの計算負荷を制御します。これは対数的であり、+1 ごとに作業量は 2 倍になります。コスト 12 は一般的な現代の CPU で約 250 ミリ秒かかり、コスト 14 は約 1 秒かかります。以下の表は、各コストレベルの推定計算時間を示しています。ログインフローに十分な速さでありながら、攻撃者を阻止するのに十分な遅さの値を選択してください。
| コスト | 計算回数 | 推定時間 | 強度 | 推奨用途 |
|---|---|---|---|---|
| 4 | 2^4 |
< 1 ms | テスト専用 — 本番不可 | |
| 5 | 2^5 |
2 ms | テスト専用 — 本番不可 | |
| 6 | 2^6 |
4 ms | テスト専用 — 本番不可 | |
| 7 | 2^7 |
8 ms | テスト専用 — 本番不可 | |
| 8 | 2^8 |
16 ms | レガシーシステム | |
| 9 | 2^9 |
31 ms | レガシーシステム | |
| 10 | 2^10 |
62 ms | 本番環境の最小値 | |
| 11 | 2^11 |
125 ms | 本番環境の最小値 | |
| 12 | 2^12 |
250 ms | 推奨デフォルト | |
| 13 | 2^13 |
500 ms | 高セキュリティアプリ | |
| 14 | 2^14 |
1.00 秒 | 最大強度 | |
| 15 | 2^15 |
2.00 秒 | 最大強度 |
bcrypt ハッシュの構造 (Anatomy)
すべての bcrypt ハッシュは正確に 60 文字の長さで、固定の構造に従います。各セグメントを理解することで、ログインの問題のデバッグやシステム間でのハッシュの移行がはるかに容易になります。
$2b$ → アルゴリズムのバリアント$12$ → コスト要素 (2^12 = 4096 回の計算)7i..qTPY7p4ZLvKIepRKwe → 22 文字の Base64 ソルトlX0JB55DviohJT.JYruzy4EN6cl.q8O → 31 文字のハッシュ化されたダイジェスト
ソルトとダイジェストのエンコーディング
bcrypt は、標準の Base64 に似ていますが、+/ の代わりに ./ を使用し、パディングを使用しない独自の Base64 アルファベットを使用します。これは純粋に歴史的な理由によるもので、セキュリティには影響しません。ソルトは 16 バイトのランダムデータで 22 文字の Base64 文字としてエンコードされ、ダイジェストは 23 バイトで 31 文字としてエンコードされます。
bcrypt バリアントの解説
bcrypt にはいくつかの接頭辞が存在します。これらはすべて同じ構造のハッシュを生成しますが、起源が異なります。
ツールの使い方
- モードを選択:新しい bcrypt ハッシュを作成するには「ハッシュ生成」を選択し、パスワードが既存のハッシュと一致するか確認するには「ハッシュ検証」を選択します。
- パスワードを入力:入力フィールドにプレーンテキストのパスワードを入力します。バイトメーターは、パスワードが bcrypt の 72 バイト制限に近づくと警告を表示します。
- コスト要素を設定:生成モードでは、スライダーをドラッグして 4 から 15 の間でコスト要素を選択します。推定計算時間とセキュリティ評価がリアルタイムで更新されます。
- 検証するハッシュを貼り付け:検証モードでは、
$2a$、$2b$、$2x$、または$2y$で始まる既存の 60 文字の bcrypt ハッシュを貼り付けます。 - 実行して結果を確認:アクションボタンをクリックします。生成モードでは色分けされた構造分解とともにハッシュが表示され、検証モードでは元のコスト要素とともに大きな「MATCH(一致)」または「NO MATCH(不一致)」のインジケーターが表示されます。
72 バイトのパスワード制限
bcrypt は Blowfish のキーセットアップフェーズに基づいて構築されており、パスワードの最初の 72 バイトのみを消費します。72 バイトを超えるパスワードは、古いライブラリでは暗黙的に切り捨てられ、新しいライブラリでは完全に拒否されます。文字数ではなくバイト数が重要であることに注意してください。たとえば、1 つの絵文字は 4 バイトであり、ほとんどの非 ASCII 文字は UTF-8 で 2〜4 バイトを消費します。アプリケーションで任意の長さのパスワードを受け入れる場合、標準的な対策は、bcrypt に渡す前にパスワードを SHA-256 でプリハッシュし、ダイジェストを Base64 エンコードすることです。これにより、制限内に収まる固定 44 バイトの入力が生成されます。
bcrypt vs Argon2 vs scrypt の選択
OWASP と IETF (RFC 9106) による現代のパスワードハッシュの推奨事項では、Argon2id (新しいアプリに推奨)、bcrypt、scrypt、PBKDF2 の 4 つの許容可能なアルゴリズムが挙げられています。以下の場合に bcrypt を選択してください:
- 幅広い互換性が必要な場合 — すべての主要な言語に成熟した bcrypt ライブラリがあります。
- すでに bcrypt を使用している既存のシステムで作業している場合。
- 25 年以上の暗号解読に耐えてきた実績のあるアルゴリズムを求める場合。
- メモリハードハッシュ (Argon2id, scrypt) が環境的に実用的でない場合。
互換性の制約がない新しいシステムを構築する場合は、Argon2id を選択してください。これは Password Hashing Competition の勝者であり、bcrypt では対抗できない GPU や FPGA による攻撃に対する耐性を提供します。
実用的なユースケース
開発者向け
- 完全な登録フローを実行せずに、開発用データベースにリアルなテストユーザーをシードする。
- ログインパスをテストする統合テスト用のフィクスチャデータを生成する。
- ユーザーが報告したパスワードに対して本番環境のハッシュを検証し、ログイン失敗をデバッグする。
- 次回のログイン時に再ハッシュすることで、レガシーな
$2a$ハッシュを$2b$に移行する。 - 実際の計算時間を測定して、本番環境のコスト要素を調整する。
セキュリティエンジニア向け
- サードパーティの認証サービスが、主張どおりのコスト要素でハッシュを生成しているか検証する。
- 本番サンプルのハッシュバリアントとコストを検査して、パスワードの保存状態を監査する。
- bcrypt の構造がいかにレインボーテーブルに強いかを示すトレーニング資料を作成する。
学習者向け
- 同じパスワードを 2 回生成して、ソルトによって異なるハッシュが生成される様子を確認する。
- 異なるコスト要素を試して、計算量が倍増する効果を直接体験する。
- 既知のハッシュを検証して、bcrypt が候補をハッシュ化する前にどのようにコストとソルトを抽出するかを理解する。
よくある質問
bcrypt にはどのコスト要素を使用すべきですか?
OWASP は現在、少なくとも 10 のコスト要素を推奨しています。12 は、一般的なサーバーで約 250 ミリ秒かかる現代的なデフォルトとして適しています。コストは対数的であるため、+1 ごとに作業量は 2 倍になります。コスト 14 は高セキュリティのアプリケーションに適しており、コスト 15 は対話型ログインの実用的な最大値です。本番環境で 10 未満のコストを使用しないでください。
$2a$、$2b$、$2x$、$2y$ の違いは何ですか?
これら 4 つはすべて bcrypt のバリアントであり、接頭辞によって区別されます。$2a$ は最初の改訂版です。$2x$ と $2y$ は 2011 年に発見された符号拡張のバグに対する PHP の緊急修正です。$2b$ は長いパスワードでのラップアラウンドバグを修正した現代のリファレンス実装です。どのバリアントで生成されたハッシュも検証可能です。現代のライブラリはデフォルトで $2b$ を生成するため、新しいハッシュにはこれを使用することをお勧めします。
入力したパスワードはサーバーに送信されますか?
フォームは HTTPS 経由でサーバーサイドで処理され bcrypt 計算が行われますが、パスワードも結果のハッシュもログに記録されたり保存されたりすることはありません。各リクエストは処理後に破棄されます。テスト用パスワードについて完全に慎重になりたい場合は、実際の本番用パスワードをオンラインツールに貼り付けないでください。このツールは使い捨てのテスト用パスワード、またはローカルの開発環境で使用してください。
なぜ bcrypt には 72 バイトのパスワード制限があるのですか?
bcrypt は Blowfish のキーセットアップフェーズに基づいて構築されており、入力の最初の 72 バイトのみを消費します。72 バイトを超えるパスワードは、古いライブラリでは暗黙的に切り捨てられ、新しいライブラリでは拒否されます。任意の長さのパスワードをサポートするには、bcrypt に渡す前に SHA-256 でプリハッシュし、ダイジェストを Base64 エンコードします。このツールはパスワードが制限を超えた場合に警告を表示します。
別の bcrypt ライブラリで生成されたハッシュを検証できますか?
はい。すべての bcrypt 実装は同じワイヤフォーマット ($variant$cost$salt+digest、合計 60 文字) に従い、相互運用可能なハッシュを生成します。Node.js の bcrypt、PHP の password_hash、Python の passlib、Spring Security、またはその他の準拠ライブラリで作成されたハッシュは、バリアント接頭辞が認識される限り、ここで正しく検証されます。
同じパスワードを 2 回生成すると、なぜ異なるハッシュになるのですか?
bcrypt は、すべてのハッシュに対して新しいランダムな 16 バイトのソルトを自動的に生成します。ソルトはアルゴリズムに混合され、出力に埋め込まれるため、同じパスワードの 2 つのハッシュが同一になることは事実上ありません。検証が機能するのは、checkpw が保存されたハッシュからコストとソルトを抽出し、ダイジェストを比較する前に、それらと全く同じパラメータで bcrypt を再実行するためです。
bcrypt ハッシュから元のパスワードを復元できますか?
いいえ。bcrypt は一方向関数であり、復号操作は存在しません。ハッシュから元のパスワードを見つける唯一の方法は、パスワードを推測して、ダイジェストが一致するまで同じコストとソルトで bcrypt を実行することです。これはまさに攻撃者がブルートフォース攻撃中に行うことです。bcrypt の適応型コストの目的は、これらの推測を非常にコストのかかるものにすることにあります。
モバイルデバイスで動作しますか?
はい。インターフェースは完全なレスポンシブ対応で、スマートフォン、タブレット、デスクトップで動作します。モードスイッチ、コストスライダー、結果パネルはすべて狭い画面に適応します。
追加リソース
このコンテンツ、ページ、またはツールを引用する場合は、次のようにしてください:
"bcryptハッシュ生成・検証ツール"(https://MiniWebtool.com/ja//) MiniWebtool からの引用、https://MiniWebtool.com/
miniwebtool チームによる提供。更新日: 2026年4月26日