コンテンツへスキップ
uencoder

安全な鍵を生成する方法

適切なランダム性を使って、AES、RSA などのアルゴリズム用の暗号鍵を生成します。

问题

暗号鍵が必要ですが、十分なエントロピーと正しいサイズで生成されていることを確認したい。

前提条件

  • 暗号学的乱数の理解
  • 対象アルゴリズムの鍵長に関する知識

ステップ

  1. 1. Choose the key type and size

    For AES, choose 128, 192, or 256 bits. For RSA, choose at least 2048 bits (3072+ recommended). For HMAC, the key should be at least as long as the hash output. Match the key size to your security requirements.

    入力
    AES-256
    输出
    32 bytes (256 bits)
  2. 2. Use a cryptographically secure RNG

    Generate the key using a cryptographically secure random number generator (CSPRNG). In browsers, use crypto.getRandomValues. In Node.js, use crypto.randomBytes. Never use Math.random or other non-secure PRNGs for keys.

    入力
    crypto.randomBytes(32)
    输出
    32 secure random bytes
  3. 3. Store the key securely

    Store the key in a secure key store, environment variable, or hardware security module. Never commit keys to source control. If deriving from a password, use a KDF like PBKDF2 or scrypt with a high iteration count and a random salt.

    入力
    key + secure storage
    输出
    key available at runtime, not in code

期待される結果

正しいサイズの暗号論的乱数鍵。安全に保存され、ソースコードには決して露出しません。

よくあるエラー

Using Math.random for key generation
Math.random is not cryptographically secure. Always use crypto.getRandomValues or crypto.randomBytes.
Deriving a key with a single hash of a password
Use a proper KDF (PBKDF2, scrypt, or Argon2) with a high iteration count and a random salt to resist brute force.

トラブルシューティング指引

  • If keys are predictable, verify the RNG source is a CSPRNG and not seeded with a known value.
  • Check that the key length matches the algorithm requirement exactly.

セキュリティ上の制限

  • Keys generated on this tool stay in your browser. No key material is transmitted or stored remotely.

関連ツール

参考链接