Вопрос прост: когда мне следует вызывать функцию reset () в Java-классе MessageDigest?
Вопрос в основном взято из справочника OWASP , где в примере кода они делают:
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.reset();
digest.update(salt);
byte[] input = digest.digest(password.getBytes("UTF-8"));
затем в цикле они делают:
for (int i = 0; i < iterationNb; i++) {
digest.reset();
input = digest.digest(input);
}
Теперь мне кажется, что сброс выполняется только требуется, если экземпляр дайджеста уже был «загрязнен» вызовами update. Таким образом, тот, который указан в первом примере, не кажется необходимым. Если это необходимо, является ли это признаком того, что экземпляр, возвращаемый MessageDigest.getInstance, не является потокобезопасным?