Bcrypt 验证器
检查密码是否与 bcrypt 哈希匹配。粘贴密码和以 $2a$, $2b$ 或 $2y$ 开头的哈希,工具会从字符串中读取盐值和成本,重新计算哈希,并告知是否匹配。它可帮助开发者调试登录问题、确认数据库迁移,以及测试来自 PHP、Node.js 或 Python 的哈希。成本高于 12 的哈希会被拒绝,密码绝不会回显。
常见问题
bcrypt 验证是如何工作的?
工具会从哈希字符串中读取版本、成本和盐值,使用完全相同的设置对你的密码进行哈希,然后将结果与存储的哈希比较。如果两者相同,结果就是匹配,否则就是不匹配。
支持哪些哈希格式?
工具接受模块化 crypt 格式,前缀为 $2a$、$2b$ 或 $2y$,并包含两位数的成本值以及 53 个字符的盐值和哈希。这些格式适用于 PHP password_hash、Node.js bcrypt 和 bcryptjs、Python bcrypt 以及 Spring Security。
为什么我的哈希被拒绝了?
哈希必须恰好为 60 个字符,格式为 $2b$10$ 后跟 bcrypt 字符集中的 53 个字符。请检查它是否被数据库列截断,或被引号包裹。为保证服务运行快速,成本高于 12 的哈希会被拒绝。
可以试试已知示例吗?
已发布的 jBCrypt 测试向量 $2a$06$If6bvum7DFjUnE9p2uDeDu0YHzrHM6tf.iqN8.yx.jNN1ILEf7h0i 对应密码 abc。输入两者会返回匹配,输入任何其他密码都会返回不匹配。
为什么成本上限是 12?
验证哈希所需的成本与创建哈希一样,而且成本每增加一级,耗时就会翻倍。成本高于 12 可能需要数秒,因此工具会拒绝此类请求,以免服务器被占用。
验证器会显示或存储我的密码吗?
不会。响应中只有哈希和验证结果,绝不会包含密码。任何内容都不会被记录或保存。
密码长度有上限吗?
Bcrypt 只读取密码的前 72 个字节;本工具会拒绝更长的密码,而不是将其截断。如果你的系统在创建哈希时截断了较长的密码,请只输入前 72 个字节。
$2a$、$2b$ 和 $2y$ 有什么区别?
它们标记的是针对旧版实现漏洞的修复:$2y$ 来自 PHP 的 crypt_blowfish 修复,$2b$ 则来自 OpenBSD 对长密码的修复。对于有效且不超过 72 字节的密码,它们计算出的哈希相同,因此本工具支持验证这三种格式。
可以在这里验证其他算法的哈希吗?
不可以。本工具只能检查 bcrypt 哈希。对于以 $argon2 开头的字符串,请使用 Argon2 Verifier。
为什么我的密码生成的新 bcrypt 哈希与存储的哈希不相同?
每个 bcrypt 哈希都会使用新的随机盐值,因此同一密码的两个哈希字符串总是不同。这就是为什么验证时会使用存储的盐值重新计算,而不是比较两个哈希。