Нужно ли мне вызывать MessageDigest.reset () перед его использованием ?

Вопрос прост: когда мне следует вызывать функцию 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, не является потокобезопасным?

5
задан Antti Haapala 24 July 2016 в 08:09
поделиться