पासवर्ड को स्टोर करने का सामान्य तरीका है, पासवर्ड पर हैश फ़ंक्शन का उपयोग करना, लेकिन नमक के लिए यह पहले से। इंद्रधनुष तालिका से अपना बचाव करने के लिए, पासवर्ड को "नमक" करना महत्वपूर्ण है। हमले।
तो आपकी टेबल कुछ इस तरह दिखनी चाहिए
._______._________________.______________.
|user_id|hash |salt |
|-------|-----------------|--------------|
|12 |[email protected]|13%!#tQ!#3t...|
| |... |... |
यह जाँचते समय कि दिया गया पासवर्ड किसी उपयोगकर्ता से मेल खाता है या नहीं, आपको दिए गए पासवर्ड से नमक मिलाना चाहिए, और परिणाम स्ट्रिंग के हैश फ़ंक्शन की गणना करनी चाहिए। यदि हैश फ़ंक्शन आउटपुट hash
. से मेल खाता है कॉलम - यह सही पासवर्ड है।
हालांकि यह समझना महत्वपूर्ण है कि नमक-हैश विचार का एक विशिष्ट कारण है - किसी को भी पासवर्ड जानने से डेटाबेस तक पहुंच को रोकने के लिए (इसे हैश फ़ंक्शन आउटपुट को उलटना मुश्किल समस्या माना जाता है)। उदाहरण के लिए, बैंक का DBA, आपके बैंक खाते में लॉग-इन नहीं कर पाएगा, भले ही उसके पास सभी कॉलमों तक पहुंच हो।
आपको इसका उपयोग करने पर भी विचार करना चाहिए यदि आपको लगता है कि आपके उपयोगकर्ता आपकी वेबसाइट के पासवर्ड के रूप में एक संवेदनशील पासवर्ड (उदाहरण के लिए उनके जीमेल खाते के लिए उनका पासवर्ड) का उपयोग करेंगे।
IMHO यह हमेशा एक सुरक्षा सुविधा नहीं होती है जिसकी आवश्यकता होती है। इसलिए आपको सोचना चाहिए कि आप इसे चाहते हैं या नहीं।
देखें यह लेख इस तंत्र के अच्छे सारांश के लिए।
अपडेट करें: यह उल्लेखनीय है कि व्यक्तिगत पासवर्ड के हैश को उलटने के लिए लक्षित हमले के खिलाफ अतिरिक्त सुरक्षा के लिए, आपको बीक्रिप्ट का उपयोग करें , जिसकी गणना करना मनमाने ढंग से कठिन हो सकता है। (लेकिन जब तक आप अपने विशिष्ट डेटाबेस को लक्षित करने वाले रहस्यमय व्यक्ति से वास्तव में डरते नहीं हैं, मुझे लगता है कि sha1 काफी अच्छा है। मैं इस अतिरिक्त सुरक्षा के लिए अपनी परियोजना के लिए एक और निर्भरता पेश नहीं करूंगा। उसने कहा, sha1 का उपयोग न करने का कोई कारण नहीं है 100 बार, जो एक समान प्रभाव देगा)।