पृष्ठभूमि आप कभी ... वास्तव में ... उपयोगकर्ता के पासवर्ड को जानने की आवश्यकता नहीं है। आप बस एक आने वाले उपयोगकर्ता को सत्यापित करना चाहते हैं कि खाते के लिए पासवर्ड पता है।
हैश यह: एक मजबूत हैश फ़ंक्शन के माध्यम से उपयोगकर्ता पासवर्ड हैश (एक तरफा एन्क्रिप्शन) स्टोर करें। "सी # एन्क्रिप्ट पासवर्ड" की खोज उदाहरणों का एक भार देती है।
हैश फ़ंक्शन का उत्पादन करने के विचार के लिए online SHA1 hash creator देखें (लेकिन SHA1 को हैश फ़ंक्शन के रूप में उपयोग न करें, SHA256 जैसे कुछ मजबूत उपयोग करें)।
अब, एक हैश किए गए पासवर्ड का अर्थ है कि आप (और डेटाबेस चोर) उस हैश को मूल पासवर्ड में वापस करने में सक्षम नहीं होना चाहिए।
इसका उपयोग कैसे करें: लेकिन, आप कहते हैं, मैं डेटाबेस में संग्रहीत इस मैश किए हुए पासवर्ड का उपयोग कैसे करूं?
जब उपयोगकर्ता लॉग इन करता है, तो वे आपको उपयोगकर्ता नाम और पासवर्ड (इसके मूल पाठ में) सौंपेंगे, आप केवल उसी हैश कोड का उपयोग हैश को संग्रहीत संस्करण प्राप्त करने के लिए टाइप किया गया है।
तो, दो हैश किए गए पासवर्ड की तुलना करें (उपयोगकर्ता नाम के लिए डेटाबेस हैश और टाइप किए गए & हैश पासवर्ड)। आप बता सकते हैं कि "क्या उन्होंने टाइप किया है" मिलान किया है "मूल उपयोगकर्ता ने अपने पासवर्ड के लिए क्या दर्ज किया है" अपने हैंश की तुलना करके।
अतिरिक्त क्रेडिट:
प्रश्न: अगर मैं अपने डेटाबेस था, तो नहीं मैं सिर्फ जॉन खूनी की तरह एक पटाखा लेने के लिए और हैश कमाना शुरू कर जब तक मैं अपने संग्रहीत करने के लिए मैचों मिल सकता है, टुकड़ों में बांटा पासवर्ड ? (चूंकि उपयोगकर्ता संक्षिप्त, शब्दकोष शब्द चुनते हैं ... यह आसान होना चाहिए)
उत्तर: हाँ ... हाँ वे कर सकते हैं।
तो, आपको अपने पासवर्ड 'नमक' करना चाहिए। देखें Wikipedia article on salt
देखें "How to hash data with salt" C# example
जो भी आप करते हैं, यदि आप एन्क्रिप्शन के साथ जाते हैं, तो कोड में कुंजी को पिछले पोस्टर के रूप में संग्रहीत न करें। यह सिर्फ खराब अभ्यास है। – Woody
'पासवर्ड कैसे सही करें?' एक महत्वपूर्ण सवाल है। यह एक कठिन समस्या है और गलतियों के गंभीर परिणाम हैं (याद रखें टेस्को और लिंक्डइन के साथ क्या हुआ)। मुझे लगता है कि http://programmers.stackexchange.com –
पर यह प्रश्न फिर से खोला जाना चाहिए मानकों के साथ रहना बेहतर है - http://en.wikipedia.org/wiki/PBKDF2 देखें आपको केवल अपने कार्यान्वयन को ढूंढना होगा भाषा –