java - 无需 Java 即可验证 Md5PasswordEncoder 哈希值?

标签 java spring hash spring-security md5

我们正在将一些后端 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/

相关文章:

java - 如何使用具有 [{ 的 java 来分割 json 响应

java - 如何在生成之后但测试执行之前修改数据库模式?

java - 多线程的Spring问题

algorithm - 可变大小 bool 数组的哈希算法

java - 我正在尝试用java制作一个半高效的哈希表,但最终陷入了无限循环

Java JOptionPane 单步执行数组

java - 为每个元素生成带有命名空间的 XML

java - 如何在java中向单个键添加多个值

java - Spring启动配置

java - 是否有一个好的 32 位哈希函数可用于幂等性?