问题很简单:何时应该在java类MessageDigest上调用reset()函数?
问题主要来自OWASP参考,在代码示例中,它们执行:
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.reset();
digest.update(salt);
byte[] input = digest.digest(password.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
然后,在一个循环中,他们做:
for (int i = 0; i < iterationNb; i++) {
digest.reset();
input = digest.digest(input);
}
Run Code Online (Sandbox Code Playgroud)
现在,对我来说,只有在摘要实例已被"更新"调用"污染"后,才会看到重置.因此,第一个样本中的那个似乎没有必要.如果有必要,是否表明MessageDigest.getInstance返回的实例不是线程安全的?