我在使用带有 MD5 的盐时遇到了一些问题。我同时使用 SQL(使用 Postgres 9.2)和 Java,但我无法弄清楚 salt 和未加密密码是如何组合的。这是我正在使用的 Java 代码:
PasswordEncoder encoder = new Md5PasswordEncoder();
System.out.println(encoder.encodePassword("userP@ss", "My_$3cr3t-$4lT"));
这给出了结果:
fac5ed68dd60573a4eb90760f02f5f5c
但是当我使用 SQL 做同样的事情时:
insert into account (email_address, account_name, password, phone_number, enabled)
values ('user@freewheelers.com', 'UserCat', md5(CONCAT('userP@ss','My_$3cr3t-$4lT')), '', true);
这给出了结果:
c7d3665f9d5bebf959b0a890d0b75a9e
在这种情况下,能够使用 SQL 复制 Java 正在执行的操作非常重要,反之亦然。有谁知道 SQL 和 Java 如何结合密码和盐?
另外,我知道我应该使用 BCrypt 或其他算法,但在这种情况下,必须使用 MD5 + salt。
谢谢!