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

时间:2017-10-26 16:29:47

标签: java spring hash spring-security md5

我们正在将一些后端API调用从Java移动到Node,但我们一直在使用Md5PasswordEncoder来使用salt来密码密码。

如果我运行以下内容:

Md5PasswordEncoder pe = new Md5PasswordEncoder();
pe.encodePassword("1", "1");

我得到了结果:

6a8a1f634e38d30e87b450899b31f810

但是,如果我手动哈希" 11"我明白了:

6512bd43d9caa6e02c990b0a82652dca

我已尝试过pass和salt的其他组合,但我无法弄清楚Md5PasswordEncoder如何将salt与密码组合在一起。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

check the source

时很简单

添加盐

String merged = password + "{" + salt.toString() + "}";

所以得到1{1}的MD5和il!

请注意,据我所知,这不是添加盐的“标准”方式。在文献中,通常只是说“盐被添加到密码中”而没有详细说明它是如何添加,添加或附加的,以及上面实现中的{}之类的特殊标记。重要的是要确保散列的所有处理程序都知道添加盐的方式(否则你会遇到问题的情况)。