我们正在将一些后端 API 调用从 Java 转移到 Node,但我们一直在使用 Md5PasswordEncoder 使用盐对密码进行哈希处理。
如果我运行以下命令:
Md5PasswordEncoder pe = new Md5PasswordEncoder();
pe.encodePassword("1", "1");
我得到结果:
6a8a1f634e38d30e87b450899b31f810
但是,如果我手动散列“11”,我会得到:
6512bd43d9caa6e02c990b0a82652dca
我尝试过 pass 和 salt 的其他组合,但我无法弄清楚 Md5PasswordEncoder 如何将 salt 与密码组合起来。有什么想法吗?
最佳答案
这很简单,当你 check the source
盐的添加方式为
String merged = password + "{" + salt.toString() + "}";
因此,获得 1{1}
的 MD5,瞧!
请注意,据我所知,这不是添加盐的“标准”方法。在文献中,通常只是说“盐被添加到密码中”,而没有详细说明如何添加、前置或附加盐,并使用一些特殊标记,例如上述实现中的 {}
或不是。重要的是要确保哈希的所有处理程序都知道添加盐的方式(否则您会陷入问题的情况)。
关于java - 无需 Java 即可验证 Md5PasswordEncoder 哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46959425/