ESC

Bcrypt生成ツール

2^10 = 1,024回反復(推奨デフォルト)
Bcryptハッシュがここに表示されます...

Bcrypt情報

コストファクターの影響

コストファクターが高いほどセキュリティが向上しますが、計算時間が長くなります。1段階増加するごとに計算時間が2倍になります。

コスト 反復回数 概算時間
8256~40ms
101,024~100ms
124,096~400ms
1416,384~1.5s
1665,536~6s
すべてのハッシュ化はブラウザ内でピュアJavaScriptにより実行されます。パスワードがデバイスから送信されることはありません。

使用例

パスワードをハッシュ化

デフォルトのコストファクター10でパスワードのbcryptハッシュを生成します。ほとんどのアプリケーションに最適です。

パスワードを検証

パスワードが指定されたbcryptハッシュと一致するか確認します。認証フローのテストに便利です。

高セキュリティハッシュ

機密性の高いアプリケーション向けに、より高いコストファクター(12)でハッシュを生成します。

機能

Bcryptハッシュ化

Blowfish暗号に基づく適応型コストファクター付きの業界標準bcryptパスワードハッシュ化

設定可能なコスト

ユースケースに合わせてセキュリティとパフォーマンスのバランスを調整するため、4から31のコストファクターを設定可能

ハッシュ検証

認証テストやハッシュ検証のために、任意のパスワードをbcryptハッシュと照合して検証

100%クライアント側

ピュアJavaScriptによるbcrypt実装。パスワードがブラウザから外部に送信されることはありません

使い方

1

パスワード入力

ハッシュタブでハッシュ化したいパスワードを入力または貼り付けます。

2

コストファクター設定

コストファクターを選択します(デフォルト10)。高い値はより安全ですが遅くなります。

3

生成または検証

ハッシュ生成をクリックしてbcryptハッシュを作成するか、検証タブでパスワードとハッシュを照合します。

よくある質問

Bcrypt は 1999 年に Niels Provos と David Mazières によって設計されたパスワードハッシュ関数です。SHA-256 や MD5 のような汎用的なハッシュ関数とは異なり、bcrypt はパスワードのために専用に構築されました。主な特徴として、ランダムなソルトを自動的に生成して埋め込み(レインボーテーブル攻撃を防ぐ)、調整可能なコスト係数によって各ハッシュ計算を意図的に遅くします。これにより、ブルートフォース攻撃の計算コストを非常に高くすることができます。現代のほとんどの Web アプリケーションにおいて、パスワード保存のための推奨される選択肢です。

SHA-256 と MD5 は高速に動作するように設計されています。最新の GPU を使用すれば、毎秒数千億件の SHA-256 ハッシュを計算できます。そのスピードはパスワードハッシュにおいては致命的です。攻撃者は毎秒数千億件のパスワード推測をブルートフォースできます。対照的に Bcrypt は意図的に低速です。コスト係数 10 では単一のハッシュ計算にミリ秒単位の時間がかかり、強力なハードウェアを使用しても攻撃者の推測回数を毎秒数百回までに制限します。パスワードハッシュに MD5、SHA-1、あるいは SHA-256 を直接使用しないでください。代わりに bcrypt、Argon2、または scrypt を使用してください。

OWASP が推奨する最小のコスト係数は 10(2^10 = 1,024 回の繰り返し)で、現代のハードウェアでは約 100ms でハッシュを生成します。金融口座などの機密性の高いデータを扱うシステムには、コスト係数 12 を使用してください。増加するごとに計算時間は倍増し、係数 12 は 係数 10 よりも 4 倍長くかかります。実際のサーバーハードウェアでテストを行い、ハッシュごとに 100-300ms を目指してください。これは攻撃者を阻止するには十分な遅さであり、正当なユーザーをイライラさせない程度の速さです。本番環境では決して係数 10 未満にはしないでください。

Bcrypt は各ハッシュに対して暗号的にランダムな 22 文字のソルトを生成し、出力文字列に埋め込みます。このソルトにより、たとえ 2 人のユーザーが同じパスワードを持っていても、異なるハッシュ値が得られることが保証されます。これによりレインボーテーブル(事前計算されたハッシュとパスワードの対応表)が無効化され、攻撃者が 2 つのアカウントが同じパスワードを共有していることを知るのを防ぎます。ソルトはハッシュ文字列の一部として保存されるため($2b$10$<22-char-salt><31-char-hash>)、別途保存する必要はありません。

いいえ。Bcrypt(およびすべての適切な暗号ハッシュ関数)は一方向関数です。元に戻す方法はありません。Bcrypt ハッシュからパスワードを「見つける」唯一の方法はブルートフォースです。一致するまで数百万の候補パスワードを試します。これが、Bcrypt の低速さがバグではなくセキュリティ機能である理由です。パスワードが正しいか確認するには検証(verify)関数を使用します。これは入力に対してハッシュに保存されているソルトを使用して再ハッシュを行い、その結果を比較するものです。

Verify タブでは、既存のハッシュ文字列に埋め込まれたソルトとコスト係数を抽出します。それらのパラメータを使用して入力パスワードに対して Bcrypt を実行し、その結果を保存されたハッシュと比較します。一致すれば、パスワードは正しいことになります。これが Web アプリケーションでの認証の仕組みです。保存されたハッシュは決して変化せず、同じソルトを使って再計算することでログイン試行を検証するのです。このプロセスには、ハッシュを生成する時と同じ時間がかかりますが、これは意図的な仕様です。

はい、あります。Bcrypt は 72 バイトでパスワードを切り捨てます。つまり、非常に長いパスワード(72 文字以上の ASCII 文字、またはマルチバイトの Unicode 文字の場合はそれ以下)は、72 バイト目以降の内容に関わらず同じハッシュを生成します。「password123」と「password123abc...」が最初の 72 バイト一致していれば、同じ値にハッシュされます。ユーザーが 72 文字を超えるパスワードを入力する可能性があるアプリケーションでは、一般的な対策として、まずパスワードを SHA-256 でハッシュ化し、その結果を Bcrypt に渡す方法があります(このハッシュは 64 の ASCII 文字であり、制限内に十分に収まります)。

いいえ。このツールはブラウザ内で完全に動作する Bcrypt の純粋な JavaScript 実装を使用しています。あなたのパスワード、生成されたハッシュ、およびすべての検証結果はデバイス内に留まります。何もサーバーには送信されません。そのため、開発中に実際のパスワードを使用してハッシュを生成・テストすることも安全ですが、ベストプラクティスとしては実際のユーザー資格情報ではなくテスト用パスワードを使用すべきです。

Bcryptとは?

パスワードを平文で保存している?やめてくれ。Bcryptはパスワード専用に設計されたハッシュ関数だ。ランダムなソルトを自動で追加し、ハードウェアが高速化しても引き上げられるコストファクターがある。各ハッシュは意図的に計算に時間がかかり、それがブルートフォース攻撃を非現実的にする。Django、Rails、Laravel、Springなど主要フレームワークがネイティブでサポートしている。

このBcryptツールを使う理由

パスワードを貼り付けて、コストファクターを選んで、ハッシュを取得。検証が必要?検証タブに切り替えて既存のハッシュとパスワードを照合。すべてクライアントサイドのピュアJavaScriptで動作するのでパスワードがネットワークに触れることはない。開発中のテストハッシュ生成やアプリを起動せずに本番ハッシュを検証するのに最適。

セキュリティとプライバシー

あなたのデータの安全を最優先しています

ローカル処理

すべての処理がブラウザ内で完結します

データ送信なし

データはサーバーに送信されません

保存しません

データは保存も共有もされません

SSL暗号化

安全な通信でご利用いただけます

次のステップ

MoreOnlineToolsでもっと見る