Хеширование и Соление паролей с Широ - PullRequest
3 голосов
/ 31 марта 2011

В 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 для соли. Помимо подкласса и переопределения этого метода есть ли лучший способ, чем то, что я должен сделать?

1 Ответ

2 голосов
/ 02 апреля 2011

Оказывается, создание подкласса SimpleHash и переопределение одного метода сделали свое дело. Просто сбросьте дайджест, добавьте соль, затем pw, а затем переварите ее, и она отлично работает

...