BCrypt 哈希比对工具|免费快速验证密码与哈希是否匹配
输入密码与 BCrypt 哈希值,几秒内即可免费验证是否匹配。运行方式与 PHP 的 password_verify() 相同,适合调试登录问题,自动支持 $2a$ 与 $2b$ 格式。
| 哈希值 | |
|---|---|
| 文本 |
匹配
不匹配
广告
Tips
- BCrypt 将盐值内嵌于哈希中,因此即使每次哈希结果不同,只要来自同一原始字符串,也会被判定为匹配。
- 本工具的验证机制与 PHP 的
password_verify($password, $hash)相同。 - 将从数据库获取的哈希值与输入密码进行比对时,请使用专用验证函数而非普通字符串比较(
==),以防止时序攻击。 - 以
$2a$开头的哈希值同样可作为 BCrypt 进行验证。
广告
常见问题
BCrypt 将随机盐值嵌入哈希值中。验证时,从哈希值中提取盐值,再用相同的盐对输入进行哈希比较,因此即使哈希值每次不同,也能正确匹配。
两者兼容,本工具均可验证。
$2b$ 是修复了旧版实现中某个错误的版本,目前推荐使用 $2b$。不能。BCrypt 是单向哈希函数,从哈希值反推原始密码在计算上是不可行的。本工具仅验证是否匹配,无法还原原始值。
闲话 ― 认证的幕后:登录时那"零点几秒"的真相
在网络服务中,按下登录按钮到收到结果之间的零点几秒,部分时间正是 BCrypt 在计算密码哈希值。这个延迟是为了安全而"故意"设计的。
时序攻击(Timing Attack)是一种旁信道攻击,通过测量处理时间的细微差异来推断秘密信息。用普通字符串比较(==)验证密码时,比较时间会因字符匹配位置不同而略有差异。BCrypt 的验证函数设计为以恒定时间运行,因此能有效抵御此类攻击。
在实际 Web 应用中,建议即使用户不存在,也以与"用户存在但密码错误"相同的时间返回响应。若攻击者能区分"用户不存在"与"密码错误",就会获得枚举有效用户名的线索。
广告