質問は簡単です: Java クラス MessageDigest で reset() 関数を呼び出す必要があるのはいつですか?
質問は主に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);
}
今、私には、ダイジェストインスタンスが更新の呼び出しですでに「汚染」されている場合にのみ、リセットが必要であるように見えます。したがって、最初のサンプルのものは必要ないようです。必要な場合、MessageDigest.getInstance によって返されたインスタンスがスレッドセーフではないことを示していますか?