Bcryptハッシュジェネレーター - Bcryptハッシュの生成と検証 オンライン
設定可能なコストファクターでbcryptパスワードハッシュを生成し、既存のbcryptハッシュに対して平文を検証します。100%クライアントサイド、パスワードがブラウザから外に出ることはありません。
本番使用に推奨
よくある質問
bcryptとは何ですか?なぜパスワードハッシュに使用されるのですか?
Bcryptは、1999年にNiels ProvosとDavid MazieresがBlowfish暗号を基に設計したパスワードハッシュ関数です。SHA-256のような汎用ハッシュ関数とは異なり、bcryptはパスワード保存のために特別に設計されています。レインボーテーブル攻撃を防ぐためのビルトインソルトと、コンピューティングパワーの増加に対応できる適応型コストファクターを含んでいます。
このbcryptハッシュジェネレーターの使い方は?
1. 生成タブに切り替えます。2. 入力フィールドにパスワードまたはテキストを入力します。3. コストファクター(ラウンド)スライダーを調整します — デフォルトは10、本番では12+推奨。4. ハッシュを生成ボタンをクリックし、計算が完了するまで待ちます。5. コピーボタンで生成された60文字のbcryptハッシュをコピーします。6. パスワードを検証するには、検証タブに切り替えます。
パスワードは安全ですか?サーバーに送信されますか?
パスワードは100%安全で、ブラウザから外に出ることはありません。このツールはbcryptjs JavaScriptライブラリを使用して、すべてのbcrypt操作を完全にお使いのデバイス上で実行します。パスワードデータ、平文、生成されたハッシュがサーバーに送信されたり、データベースに保存されたりすることはありません。
どのコストファクター(ラウンド)を使用すべきですか?
コストファクターはbcryptが実行する反復回数(2^rounds)を決定します。高い値はより安全ですが遅くなります。推奨:4-7はテストと開発専用。10はデフォルト値。12は本番使用の推奨最小値。14+は高セキュリティアプリケーション向け。
同じパスワードが毎回異なるbcryptハッシュを生成するのはなぜですか?
Bcryptは各ハッシュ操作ごとに固有の128ビットランダムソルトを自動生成します。このソルトはハッシュに組み込まれ、出力文字列の一部として保存されます。同じパスワードを2回ハッシュすると、異なるソルトが使用され、異なるハッシュ出力が生成されます。これは設計上のもので、レインボーテーブル攻撃を防ぎます。
パスワードハッシュにおけるbcryptとSHA-256の違いは?
SHA-256は高速に設計された汎用暗号ハッシュ関数ですが、bcryptはパスワードハッシュ専用に設計され、意図的に遅くなっています。SHA-256は最新のGPUで毎秒数十億のハッシュを計算できるため、ブルートフォース攻撃が可能です。Bcryptの調整可能なコストファクターは攻撃者を毎秒数千ハッシュに制限します。
このツールを本番のパスワードハッシュに使用できますか?
このツールはテスト、学習、開発目的で設計されています。本番のパスワードハッシュはアプリケーションコード内でサーバーサイドで実行する必要があります。本番でクライアントサイドでパスワードをハッシュしないでください。
コード例
const bcrypt = require('bcryptjs');
// Generate a bcrypt hash
async function hashPassword(password, rounds = 12) {
const salt = await bcrypt.genSalt(rounds);
const hash = await bcrypt.hash(password, salt);
return hash;
}
// Verify a password against a hash
async function verifyPassword(password, hash) {
const isMatch = await bcrypt.compare(password, hash);
return isMatch;
}
// Parse bcrypt hash components
function parseBcryptHash(hash) {
const match = hash.match(/^\$(\w+)\$(\d{2})\$(.{22})(.{31})$/);
if (!match) return null;
return {
version: match[1],
rounds: parseInt(match[2], 10),
salt: match[3],
hash: match[4],
};
}
// Example usage
(async () => {
const password = 'MySecurePassword123!';
const hash = await hashPassword(password, 12);
console.log('Hash:', hash);
const isValid = await verifyPassword(password, hash);
console.log('Valid:', isValid); // true
const parsed = parseBcryptHash(hash);
console.log('Parsed:', parsed);
})();