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

Spring中Scrypt PasswordEncoder如何从哈希中获取原始盐值验证密码?

SCrypt哈希值中的盐值位置解析

你给出的SCrypt哈希字符串采用**$分隔的结构化格式**,直接包含了验证所需的所有信息,盐值的位置可以通过拆分字符串明确找到:

以你提供的hash1为例:

$100801$DBrs3RHYQafAjmY0RGGgtA==$VB1ahwEHntb36HWbAF1Eiy6FoJp1WH8xmpYY4+oHPUk=

按$拆分后,会得到三个有效内容段(忽略开头空片段):

  • 第一段100801:编码后的SCrypt参数,包含成本因子、块大小等运算配置
  • 第二段DBrs3RHYQafAjmY0RGGgtA==:Base64编码的原始盐值,这就是验证密码时需要提取的盐
  • 第三段VB1ahwEHntb36HWbAF1Eiy6FoJp1WH8xmpYY4+oHPUk=:Base64编码的最终哈希结果

同理,hash2中的盐值是第二段的0EEqkaQUDzVCttua+jqu9A==——正是因为每次哈希生成的盐值随机唯一,才导致两次哈希结果不同,这是SCrypt的安全设计。

验证时,SCrypt工具会自动按$分割哈希字符串,提取中间的盐值和第一段的参数,用同样的配置对输入密码重新哈希,再和第三段的结果比对,以此完成密码验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:22:49