В apache shiro реализация хеша по умолчанию выглядит следующим образом:
MessageDigest digest = getDigest(getAlgorithmName());
if (salt != null) {
digest.reset();
digest.update(salt);
}
byte[] hashed = digest.digest(bytes);
int iterations = hashIterations - 1; //already hashed once above
//iterate remaining number:
for (int i = 0; i < iterations; i++) {
digest.reset();
hashed = digest.digest(hashed);
}
return hashed;
Обратите внимание, как она ставит соль на первое место. Нам приходится проходить аутентификацию на устаревшей системе, где хэши были пароль + соль, а не соль + пароль
В настоящее время я выполняю concat вне этого вызова метода и передаю значение null для соли. Помимо подкласса и переопределения этого метода есть ли лучший способ, чем то, что я должен сделать?