【发布时间】:2012-03-01 14:45:51
【问题描述】:
我正在将一些数据从基于 joomla 的 cms 系统迁移到基于 spring 的 Java EE 环境。
在分析过程中,我发现密码的 md5 实现与 joomla 不同???知道为什么 md5 实现的不同吗??
例如:
如果 joomla 记录有一个像“3c57ebfec712312f30c3fd1981979f58:WnvTroeiBmd5bjGmmsVUnNjppadH7giK”这样的密码字段(这里3c57ebfec712312f30c3fd1981979f58是最终的md5哈希摘要,WnvTroeiBmd5bjGmmsVUnNjppadH7giK是附加用户密码输入的关键)并且当用户尝试在spring系统中使用此记录登录时它失败了。
在基于 Spring 的 Java EE 系统中,我们使用哈希编码器作为 md5,盐作为变量,这里是 WnvTroeiBmd5bjGmmsVUnNjppadH7giK。
Junit Code sn-p:此测试用例失败。
@Test
public void testSpringMD5Functionality() {
String md5MigratedPassword = "3c57ebfec712312f30c3fd1981979f58:WnvTroeiBmd5bjGmmsVUnNjppadH7giK";
String[] m = md5MigratedPassword.split(":");
Md5PasswordEncoder passwordEncoder = new Md5PasswordEncoder();
passwordEncoder.setEncodeHashAsBase64(false);
boolean value = passwordEncoder.isPasswordValid(m[0], "password", m[1]);
assertTrue(value); //test case fails ?????
}
【问题讨论】:
标签: spring authentication md5 salt