Java でのハッシュ生成に関する OWASP の推奨事項にやみくもに従ってきました (こちらを参照)。具体的には、 の目的と効果がよくわからないMessageDigest.reset()
ため、いつ、どのように使用すればよいかわかりません。
update()
完全に署名する必要があるさまざまな値を使用してダイジェストを数回 ing することにより、salt とペイロードを「ロード」しています。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
が変わっても署名が同じままであることです。「reset()」呼び出しを省略した場合、sig は変更されます...