使用 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 上的近似时间。始终在目标硬件上进行基准测试。
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 是首选。
处理在浏览器中进行。保存和分享均为可选操作,需要账户,并会将所选内容发送到我们的服务。
处理在浏览器中进行。保存和分享均为可选操作,需要账户,并会将所选内容发送到我们的服务。