प्रश्न सरल है: जब मैं जावा क्लास MessageDigest पर रीसेट() फ़ंक्शन को कॉल करूँ?क्या मुझे इसका उपयोग करने से पहले 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 द्वारा लौटाया गया उदाहरण थ्रेड सुरक्षित नहीं है?
टीवाई, समझ में आता है। Google रेफरी पर बहुत कुछ देख रहा था, क्लास हेडर को फिर से पढ़ना भूल गया और getInstance() दस्तावेज़, इसलिए मैं उलझन में आया। –