PBKDF2 实验场
用 PBKDF2-HMAC-SHA-1/256/512 以你的盐、迭代次数和密钥长度派生密钥。输出十六进制、Base64 和 passlib 格式,已验证 RFC 6070 向量。
PBKDF2(RFC 8018)使用浏览器的 Web Crypto API 计算。OWASP 建议 HMAC-SHA-256 使用 600,000 次迭代,HMAC-SHA-512 使用 210,000 次。PBKDF2 不是内存困难型算法,新系统应优先选择 Argon2id。
用哈希验证密码
完全在浏 览器中运行,您的数据不会被上传。
什么是 PBKDF2 实验场?
用 HMAC-SHA-1、SHA-256 或 SHA-512、任意迭代次数、盐和输出长度计算 PBKDF2(RFC 8018)。结果以十六进制、Base64 和 passlib 的 $pbkdf2-sha256$ 格式显示,验证器也接受 Django 的 pbkdf2_sha256$ 哈希。
如何使用 PBKDF2 实验场
- 输入密码。
- 选择哈希函数 (PRF)、迭代次数和密钥长度(字节)。
- 输入盐值及其编码,或留空以使用随机盐。
- 点击计算哈希,复制十六进制、Base64 或编码后的结果。
示例
Password password, salt salt, HMAC-SHA-1, 4096 iterations, 20 bytes
4b007901b765489abead49d926f721d065a429c1 $pbkdf2-sha1$4096$c2FsdA$SwB5AbdlSJq.rUnZJvch0GWkKcE
该十六进制值是 RFC 6070 的测试向量 3。
何时使用 PBKDF2 实验场
适用于派生用于测试的密钥、重现 RFC 6070 向量,或验证 Django 和 passlib 哈希。对于新的密码存储,请优先使用具备内存硬度的 Argon2id 或 scrypt。
PBKDF2 实验场 的工作原理
PBKDF2 计算数据块 T_i = U_1 ⊕ U_2 ⊕ … ⊕ U_c,其中 U_1 = HMAC(password, salt ‖ INT(i)),U_j = HMAC(password, U_{j−1}),并把它们拼接到所需长度。计算由浏览器的 Web Crypto API(deriveBits)完成。passlib 格式以改编的 Base64(+ 替换为 .)存储迭代次数、盐和哈希。
常见用例
- 在迁移期间验证 Django 的 pbkdf2_sha256 哈希
- 重现 RFC 6070 测试向量
- 从口令派生 AES 密钥用于测试
- 比较迭代次数和耗时
常见问题
应该使用多少次迭代?
OWASP 建议 HMAC-SHA-256 用 600,000 次,HMAC-SHA-512 用 210,000 次,HMAC-SHA-1 用 1,300,000 次。
PBKDF2 还能接受吗?
能,尤其是在需要 FIPS 验证的场合,但它不具备内存硬度,所以 GPU 破解它比破解 Argon2id 或 scrypt 更快。
为什么密钥长度很重要?
请求的字节数超过哈希输出长度(例如 SHA-256 超过 32)时,PBKDF2 会计算额外的数据块,使防御方的成本成倍增加,却不会拖慢攻击者。