跳到主要内容
uencoder

Derive cryptographic 键从 password using KDF

Turn human-memorable password 为固定-长度键 suitable 为 AES 或 HMAC using PBKDF2, scrypt, 或 bcrypt 具有 salt.

  1. 1

    Passwords 是 low-entropy 和变量-长度; cryptographic 关键 need 高 entropy 和固定长度. 键 derivation 函数 (KDF) bridges 此 gap 通过 stretching password 通过许多 iterations, 具有 salt 到 defeat rainbow tables.

  2. 2
    PBKDF2 密钥派生 →

    Enter password, random salt, 迭代数量 (100k-600k 为 PBKDF2-SHA256), 和输出长度 (32 bytes 为 AES-256). tool 输出 derived 键 as hex 或 Base64.

  3. 3
    scrypt 密钥派生 →

    为 stronger 保护针对 GPU/ASIC attacks, use scrypt 哪个是 内存-困难. Parameters: N=2^16-2^20, r=8, p=1. 内存成本 makes 并行 brute force expensive.

  4. 4

    Store salt 和 parameters (iterations, N/r/p) 具有 encrypted 数据 — 它们是 不 secret. Only password 是 secret. 相同 parameters + salt + password 总是 reproduce 相同键.

常见问题

PBKDF2 vs scrypt vs bcrypt — 哪个应该 I use?
scrypt 是 strongest 针对 hardware attacks (内存-困难). bcrypt 是 battle-tested 为 password storage. PBKDF2 是 FIPS-标准和 宽可用. 为键 derivation 具体而言, scrypt 或 PBKDF2-SHA256 是标准 choices; bcrypt 是 designed 为 password 哈希, 不键 derivation.
为什么是 salt 不 secret?
salt's 作业是 到确保不同 users 具有相同 password get 不同关键, 和到 defeat precomputed rainbow tables. 它仅 needs 到是 唯一和 random, 不 secret. Store 它 alongside derived 键或 ciphertext.

相关工具