生成和验证 bcrypt 密码哈希。配置工作因子和算法。
使用 CSPRNG 生成随机 128 位(16 字节)盐值。盐值防止彩虹表攻击 — 相同密码产生不同哈希。
Eksblowfish 算法运行 2^n 次迭代(n 是您的成本因子)。加倍成本就会加倍计算时间 — 使暴力攻击成比例地更难。
输出编码所有内容:$2b$12$[22字符盐值][31字符哈希]。"$2b$12$" 前缀告诉 bcrypt 使用 cost=12。不需要单独的盐值列。
$2b$12$eImiTAiTAi25sDB8iBjEJfF2PbO0oagzXCgKCQfHIFnOSuJl.J2
$2b$算法版本(2a、2b、2y)
12$成本因子(2^12 = 4,096 轮)
22 字符Base64 编码盐值(128 位)
31 字符Base64 编码哈希(184 位)
| 成本 | 迭代次数 | 大约时间 | 建议 |
|---|---|---|---|
| 10 | 1,024 | ~50-100ms | 新应用程序的最低要求 |
| 11 | 2,048 | ~100-200ms | 适合高流量 API |
| 12 | 4,096 | ~200-400ms | 推荐默认值(2025) |
| 13 | 8,192 | ~400-800ms | 高安全性应用程序 |
| 14 | 16,384 | ~800ms-1.6s | 最大实用成本 |
现代服务器 CPU 上的近似时间。始终在目标硬件上进行基准测试。
另请参见 哈希生成器 用于 MD5、SHA-1、SHA-256、SHA-512 和其他密码哈希函数。
bcrypt 是 Niels Provos 和 David Mazières 于 1999 年为 OpenBSD 设计的密码哈希函数。与 MD5 或 SHA 不同,bcrypt 是故意缓慢且 CPU 密集型的,使暴力攻击不切实际。它自动包含盐值,防止彩虹表攻击。对所有密码存储使用 bcrypt(或 Argon2)— 永远不要存储明文或快速哈希(MD5/SHA)密码。
成本因子(工作因子)控制 bcrypt 的速度。每增加一个单位,计算时间加倍。对于用户认证,目标是服务器硬件上 100-300ms 的哈希时间。从 12 开始进行基准测试 — 使用能使登录时间保持在 500ms 以下的最高值。越高越安全但越慢。成本 10 是 2025 年新应用程序的最低推荐值。
两者都是现代密码哈希算法。bcrypt 经过实战检验(25年以上)且被广泛支持。Argon2 赢得了密码哈希竞赛(2015年),通过使用内存硬度对 GPU 攻击具有更强的抵抗力。Argon2id(推荐变体)结合了 Argon2i 和 Argon2d,对侧信道攻击和 GPU 攻击都有抵抗力。对于新应用程序,Argon2id 是首选。
此工具生成与任何 bcrypt 库兼容的标准 bcrypt 哈希。哈希处理完全在浏览器中使用 bcryptjs 库运行 — 密码不会发送到服务器。但是,在生产应用程序中,始终在服务器端生成密码哈希。客户端演示仅用于学习和测试目的。
所有哈希运算均在您的浏览器中本地进行。密码永远不会被传输或存储。