You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BCrypt无法检测超长密码末尾修改问题求助

问题原因与解决方案

核心原因

org.mindrot:jbcrypt:0.4 版本存在关键限制:它只会使用密码的前72个字符进行哈希计算,超出72位的部分会被直接截断忽略。

对应你的代码场景

你提供的原密码长度远超过72位,而password.dropLast(10)得到的modified密码,其前72个字符和原密码完全一致。由于BCrypt验证时只校验前72位,所以会错误地认为modified密码和原密码匹配,导致最后一个断言失败。

解决办法

  • 升级jBCrypt版本:0.5及以上的版本已经修复了这个长度截断问题,会完整处理任意长度的密码,直接升级依赖即可解决。
  • 兼容旧版本的临时方案:如果无法升级依赖,可以先对超长密码做一次单向哈希(比如SHA-256),将哈希后的字符串作为密码传入BCrypt进行哈希和验证。这样即使原密码仅末尾不同,经过前置哈希后也会生成不同的输入,避免验证错误。

内容的提问来源于stack exchange,提问作者SomeKoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:22:05