🔐 bcrypt 哈希信息
解析和分析 bcrypt 密码哈希。查看版本、成本因子、盐值和哈希摘要等组成部分。
关于 bcrypt 哈希信息工具
这个工具用于解析 bcrypt 密码哈希,将其拆分为组成部分:版本标识、成本因子、盐值和哈希摘要。在上方粘贴哈希并点击分析即可查看其结构。所有操作都在浏览器本地完成——不会上传任何数据。
bcrypt 哈希格式
bcrypt 哈希遵循模块化加密格式(Modular Crypt Format),结构为 $版本$成本$盐值+哈希。各字段说明如下:
- 版本 ——
$2a$、$2b$、$2y$或$2x$。2b是当前标准(OpenBSD);2a是原始版本;2y由部分 PHP 实现使用;2x是存在已知缺陷的遗留变体。 - 成本因子 —— 04 到 31 之间的两位数字。哈希函数执行
2^成本次迭代。值为 12 表示 4,096 轮。成本越高 = 哈希越慢 = 抗暴力破解能力越强。 - 盐值 —— 22 个字符,来自 bcrypt 自定义 base64 字母表(
./A-Za-z0-9),编码 128 位随机盐。 - 哈希摘要 —— 31 个字符,来自同一字母表,编码基于 Blowfish 的密钥派生所产生的 184 位输出。
总长度
一个完整的 bcrypt 哈希长度为 60 字符:$2b$(4)+ 12(2)+ $(1)+ 22 字符盐 + 31 字符摘要 = 60。部分数据库会存储前导 $ 或尾部数据,因此 59 到 60 字符的值都较为常见。
选择成本因子
成本因子直接控制每次验证的耗时。经验法则:将其设为单次哈希在生产硬件上大约需要 250–500 毫秒:
- 成本 10 —— 约 1,024 轮。较快,但对拥有 GPU 的现代攻击者而言日益薄弱。
- 成本 12 —— 约 4,096 轮。2024 年许多框架的常见默认值。
- 成本 14 —— 约 16,384 轮。较强,但在高负载下会带来明显延迟。
- 成本 31 —— 最大值。生产环境不切实际,仅用于高安全离线场景。
随着硬件性能提升,应定期提高成本。bcrypt 支持在登录时检测更高的期望成本并用新盐重新编码,从而实现成本升级。
为什么选 bcrypt?
bcrypt 是 Niels Provers 和 David Mazières 于 1999 年设计的密码哈希函数。与普通 SHA-256 不同,它故意设计为慢速,并采用可调成本因子,因此即使硬件提速也能保持抗暴力破解能力。内嵌的盐值可防止彩虹表攻击,确保相同密码哈希出不同值。现代密码存储推荐 bcrypt、scrypt 和 Argon2。
常见问题
这个工具能生成 bcrypt 哈希吗? 不能——它仅用于解析和分析已有哈希。生成 bcrypt 需要运行 Blowfish 加密数千次,这需要专用实现而非 Web Crypto API。
能从 bcrypt 哈希还原密码吗? 不能。bcrypt 是单向函数,"破解"它的唯一方法就是逐一尝试候选密码,而这正是成本因子使其变得昂贵的原因。
盐值是机密的吗? 不是。盐值作为哈希的一部分以明文存储是其设计意图。其作用是让每个哈希唯一,而非保密。你可以放心分享 bcrypt 哈希——它在计算上仍然难以攻击。
"预计计算耗时"是什么意思? 这是基于成本因子对单次验证耗时的粗略估算,实际性能因硬件和实现而异。
应该使用哪个变体? 新应用应使用 $2b$ 生成哈希,成本因子至少为 12。避免使用 $2x$,因存在已知符号扩展缺陷。