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