나는 맹목적으로 자바 (see here)에 해시 생성에 대한 OWASP의 권고를 따랐습니다, 나는 내가 그것을 제대로했는지 모르겠어요. 특히, 나는 MessageDigest.reset()
의 목적과 효과에 대해 확신 할 수 없으므로, 언제 어떻게 사용하는지.는 MessageDigest.reset를 사용하는 경우()
- 내 소금과 페이로드를 모두
update()
번에 여러 번 보내 다른 값으로 서명해야합니다. 나는 사전에reset()
을해야합니까? 아니면 나중에? - 왜 다이제스트 (예를 참조)를 루프 내에
reset()
되?MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(salt); md.update(payload1); // part 1 of payload md.update(payload2); // part 2 of payload md.update(serialNumber); // part 3 of payload md.reset(); byte[] sig = md.digest(); for (int i=0; i<1000; i++) { md.reset(); sig = md.digest(sig); }
은 내가 관찰하고있어 서명이
serialNumber
이 변경되는 경우에도 동일하게 유지한다는 것입니다 :
여기 내 코드입니다. '재설정()'통화를하지 않으면 신호가 변경됩니다.
가능한 복제본 [사용하기 전에 MessageDigest.reset()을 호출해야합니까?] (http://stackoverflow.com/questions/7546549/do-i-need-to-call-messagedigest-reset-before) -using-it) – durron597