我正在將一些數據從基於joomla的cms系統遷移到基於spring的Java EE環境。Md5與鹽編碼
在分析過程中我發現密碼的md5實現和joomla不一樣?任何想法爲什麼在md5實現差異?
例如: 如果的Joomla記錄有一個密碼字段,如「3c57ebfec712312f30c3fd1981979f58:WnvTroeiBmd5bjGmmsVUnNjppadH7giK
」(這裏3c57ebfec712312f30c3fd1981979f58
是最終MD5散列摘要和WnvTroeiBmd5bjGmmsVUnNjppadH7giK
是鍵與用戶輸入的密碼被附加),並且當用戶嘗試與該記錄中登錄彈簧系統失敗。
在基於spring的Java EE系統中,我們使用散列編碼器作爲md5,salt作爲一些變量,這裏是WnvTroeiBmd5bjGmmsVUnNjppadH7giK
。
Junit代碼片段:該測試用例失敗。
@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 ?????
}
我花了近一天來解決this.Below測試用例工作@Test 公共無效testSpringMD5Functionality(){ 字符串md5MigratedPassword = 「3c57ebfec712312f30c3fd1981979f58:WnvTroeiBmd5bjGmmsVUnNjppadH7giK」; String [] m = md5MigratedPassword.split(「:」); Md5PasswordEncoder passwordEncoder = new Md5PasswordEncoder(); passwordEncoder.setEncodeHashAsBase64(false); 布爾值= passwordEncoder.isPasswordValid(m [0] + m [1],「password」,null); assertTrue(value); //測試用例通過 } – challenge 2012-02-11 05:29:07