La domanda è semplice: quando dovrei chiamare la funzione reset() sulla classe java MessageDigest?Devo chiamare MessageDigest.reset() prima di usarlo?
La domanda proviene principalmente dalla OWASP reference, dove in un esempio di codice, lo fanno:
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.reset();
digest.update(salt);
byte[] input = digest.digest(password.getBytes("UTF-8"));
poi, in un ciclo, lo fanno:
for (int i = 0; i < iterationNb; i++) {
digest.reset();
input = digest.digest(input);
}
Ora, per me, sembra che il reset sia richiesto solo quando l'istanza digest è già stata "inquinata" con le chiamate all'aggiornamento. Quello nel primo campione, quindi, non sembra necessario. Se è necessario, è un'indicazione che l'istanza restituita da MessageDigest.getInstance non è thread-safe?
TY, ha senso. Stavo cercando così tanto su google refs, ho dimenticato di rileggere l'intestazione della classe e getInstance() doc, quindi sono rimasto confuso. –