# 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 哈希都会使用新的随机盐值，因此同一密码的两个哈希字符串总是不同。这就是为什么验证时会使用存储的盐值重新计算，而不是比较两个哈希。

在这里投放广告？

[给我们发邮件](mailto:hi@dennn.is?subject=%E5%9C%A8%20OneClick%20Pro%20%E4%B8%8A%E6%8A%95%E6%94%BE%E5%B9%BF%E5%91%8A)

[广告 适用于 WordPress 的智能体就绪型插件套件。](https://sleekwp.com/?ref=oneclickpro)
