同一密码为何生成不同bcrypt哈希?

时间:2026-11-07 编辑:lili

同一个密码在使用不同随机盐时,通常会生成不同的bcrypt哈希。验证不应重新随机生成一条字符串再比较,而应使用保存的完整哈希与候选密码校验。盐和计算成本等信息包含在相应哈希表示中,接收端需要按算法格式正确读取。

bcrypt哈希校验:KKCE本次官网操作2026年11月7日,www.kkce.com 实拍。同一公开教学口令、相同成本、两次自动盐;结果不同,均已等待实际校验成功后截图。KKCE第一次生成的bcrypt哈希通过校验第一次结果与主图第二次结果不同;两次均使用同一教学口令,并分别显示匹配通过。

两次生成后分别执行校验

本次在KKCE密码哈希工具填写公开教学口令,成本参数保持10,盐值输入留空。连续两次生成的结果不同,再逐个执行匹配校验,均返回通过。两张图记录不同输出和成功提示;演示口令已经公开,不对应任何真实账户。

随机盐让相同口令不易显露关联

各条记录使用独立盐,可避免相同密码总对应同一输出,也削弱预先批量计算结果的复用价值。盐一般不要求像密码那样保密,但要与记录正确关联。它不能把容易猜测的口令变强,也不能消除数据库泄露后的离线猜测风险。

完整保存比截取摘要更重要

不要只截取末尾某段字符,也不要把不同生成结果不相等当成输入密码错误。服务端应采用受维护的实现,调用专门的验证接口。成本参数需要结合实际硬件、延迟预算和并发负载评估,页面里的某个默认值不是所有业务的统一配置。

升级策略应兼顾已有用户

若未来提高成本,可在正常认证成功后依照系统策略生成新记录,并保留可控的迁移过程。快快测能帮助理解公开样例的生成与核对关系,线上真实口令应只在批准的认证流程内处理。校验失败时返回适当业务提示,避免泄露额外账户信息。