Oh MyUtils

Bcryptハッシュジェネレーター - Bcryptハッシュの生成と検証 オンライン

設定可能なコストファクターでbcryptパスワードハッシュを生成し、既存のbcryptハッシュに対して平文を検証します。100%クライアントサイド、パスワードがブラウザから外に出ることはありません。

推定時間:~100ms
41610

本番使用に推奨

よくある質問

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);
})();

関連ツール