私はjoomlaベースのCMSシステムからスプリングベースのJava EE環境にいくつかのデータを移行しています。塩をコード化したMd5
分析中、私はパスワードのmd5実装がjoomlaと同じではないことを発見しましたか?任意のアイデアなぜmd5実装の違い??例えば
: joomlaのレコードは「3c57ebfec712312f30c3fd1981979f58:WnvTroeiBmd5bjGmmsVUnNjppadH7giK
」のようなパスワードフィールドを持っていた場合(ここでは3c57ebfec712312f30c3fd1981979f58
最終md5ハッシュダイジェストであるとWnvTroeiBmd5bjGmmsVUnNjppadH7giK
は、ユーザーパスワードの入力を付加するための鍵である)と、ユーザがこのレコードでログインしようとしたときそれは失敗する。
スプリングベースの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(値); //テストケースを渡す } – challenge