bcrypt 哈希生成器
生成哈希
数值越高越慢,也更安全。12 是不错的默认值。
有时你会从旧备份里拿到一个 bcrypt 哈希和一个明文密码,需要确认它们是否匹配。或者你有一个密码,想知道在给定的成本因子(cost)下会生成什么哈希。这个工具两件事都能做:输入密码即可生成新哈希;粘贴哈希和候选密码,它会告诉你验证是否成功,使用与生产环境登录检查相同的恒定时间比较。
生成或验证 bcrypt
-
1
选择模式
从密码生成新哈希,或用密码验证已有的 `$2a$` / `$2b$` / `$2y$` 哈希。
-
2
生成模式:输入明文和 cost
cost 取值 4-13;10-12 为常见范围。每个哈希都会生成一个 16 字节的随机盐(salt)。
-
3
验证模式:粘贴哈希和明文
工具会从哈希中提取盐和 cost,并用相同参数重新哈希明文。
-
4
读取结果
生成模式复制 60 个字符的哈希;验证模式返回绿色的匹配或红色的不匹配。
验证模式内部逻辑
给定一个存储的 hash,例如:
$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
验证器会:
- 解析版本(
2b)、cost(12)、盐(cost 之后的前 22 个字符)和摘要(最后 31 个字符)。 - 使用提取出的盐和 cost,对候选明文重新运行 bcrypt。
- 用恒定时间比较,将得到的摘要与原始值进行比较。
比较成功得到 true;任何差异都会得到 false。
恒定时间比较
用简单的 == 比较两个字符串,会在第一个不同的字节处立刻返回,这是一种计时侧信道,在样本足够多时可能逐位泄露哈希。生产环境的密码检查(以及这个工具)使用恒定时间比较,它始终检查每一个字节,因此判定时间不取决于前面有多少个字节匹配。
常见诊断场景
| 症状 | 可能原因 |
|---|---|
| 验证失败,但你确信密码正确 | 输入末尾有多余空白或 BOM。两者都去掉。 |
验证失败,版本为 2y |
某些库不喜欢 2y;它有效且兼容。今后改用 2b 重新哈希。 |
| 哈希太短 / 格式错误 | 这不是 bcrypt 哈希。MD5 是 32 个十六进制字符,SHA-1 是 40 个,bcrypt 是带 $ 分隔符的 60 个字符。 |
| cost 不匹配警告 | 存储的 cost 低于你的策略下限。下次成功登录时重新哈希。 |
登录时重新哈希
最佳实践:用户成功登录后,检查已存储哈希的 cost 是否低于当前策略。如果低,就用新的 cost 重新哈希密码并更新数据库。几个月内,你就能在不要求任何人修改密码的情况下,升级整个用户群的哈希。
这个工具不会做什么
- 批量验证,本工具一次只处理一个哈希。
- 破解或暴力穷举,字典攻击或彩虹表攻击有意不在支持范围内。
- 还原明文,bcrypt 是单向的;如果忘记密码,唯一的办法是重置。
常见问题
哈希和验证在服务器上计算,因此密码会通过加密连接发送到我们的服务器。它不会被存储、不会记录日志,也永远不会添加到页面链接中。
每个哈希的盐都是随机生成的。这正是它的意义所在,两个用户即使使用相同密码也会得到不同的哈希,从而让彩虹表失效。
可以,这正是验证模式的用途:粘贴你已有的哈希,再粘贴候选密码,工具会确认或否定二者是否匹配。
支持。所有现代变体都能互操作,摘要在不同版本间兼容,区别只在于标签。少数来自 2000 年代系统的旧 $2$ 哈希,可能需要一个显式支持旧格式的库。
相关工具
Base64 文件编码器
将任意文件(PDF、ZIP、图片、可执行文件)编码为 Base64 文本,用于嵌入 JSON、邮件、YAML 或 data URI。在浏览器本地运行,无需上传。
Base58 编码器和解码器
编码 UTF-8 文本或十六进制字节,并使用 Bitcoin、Ripple 或 Flickr 字母表安全解码 Base58。
A1Z26 密码编码器
使用 A1Z26 密码(A=1, B=2, ... Z=26)编码文本,或把数字序列解码回字母,并可自定义分隔符。
校验和验证器
计算任意文本的 MD5、SHA-1、SHA-256、SHA-384、SHA-512 或 CRC32 校验和,并与预期值比较,获得明确的匹配或不匹配结果。
SSL 证书生成器
完全在浏览器中生成自签名 SSL/TLS 证书和 RSA 私钥。自定义 Common Name、SAN 和有效期,导出为 PEM。
Base32 编码器和解码器
使用 RFC 4648 字母表编码和解码 Base32 字符串。适用于 TOTP 密钥、大小写不敏感的令牌和人工输入的标识符。
此工具还提供其他语言版本
- bcrypt Hash Oluşturucu [TR]
- Generador de Hash bcrypt [ES]
- مولد Hash bcrypt [AR]
- Générateur de hachage bcrypt [FR]
- bcrypt-hashgenerator [NL]
- bcrypt 해시 생성기 [KO]
- Generator Hash bcrypt [ID]
- bcrypt Hash Generator [EN]
- Trình tạo hash bcrypt [VI]
- bcrypt Hashジェネレーター [JA]
- ตัวสร้าง bcrypt Hash [TH]
- Gerador de Hash bcrypt [PT]
- bcrypt-Hash-Generator [DE]
- bcrypt-hashgenerator [SV]
- Generator hashy bcrypt [PL]
- Generatore di hash bcrypt [IT]
- Генератор bcrypt-хешей [RU]