質問は簡単です:JavaクラスMessageDigestでいつreset()関数を呼び出す必要がありますか?MessageDigest.reset()を使用する前にそれを呼び出す必要がありますか?
質問は主にコードサンプルでは、彼らはOWASP reference、から来ている:
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によって返されたインスタンスがスレッドセーフではないことを示すものですか?
TY、意味があります。 Googleの検索エンジンで多くのことを見ていて、クラスヘッダーとgetInstance()docを再読み込みするのを忘れてしまったので、混乱しました。 –