在没有 Java 的情况下验证 Md5PasswordEncoder 哈希?

Validate Md5PasswordEncoder hash without Java?

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

请注意,据我所知,这不是 "standard" 添加盐的方法。在文献中,通常只是说 "the salt is added to the password" 而没有详细说明它是如何添加、添加或附加的,并带有一些特殊标记,例如上述实现中的 {} 。重要的是确保哈希的所有处理程序都知道添加盐的方式(否则你会遇到问题)。