我们将一些后端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() + "}";


因此,获取MD5为1{1},瞧瞧!

请注意,据我所知这不是加盐的“标准”方法。在文献中,通常只说“将盐添加到密码中”,而没有详细说明如何添加,添加或添加盐,在上述实现中是否带有一些特殊标记,例如{}。重要的是仅确保哈希的所有处理程序都知道添加盐的方式(否则您将陷入问题的境地)。

08-05 16:52