आप की तरह एक साथ एक हैश उपयोगकर्ता नाम, पासवर्ड और नमक का उपयोग करना चाहिए,:
hash(length(username)+"_veryuniquesalt4rtLMAO"+username+password)
इस तरह, आपके डेटाबेस नहीं किसी भी मौजूदा इंद्रधनुष तालिकाओं की चपेट में, नमक की वजह से है, और उपयोगकर्ता नाम के साथ टुकड़ों में बांटा पासवर्ड के साथ आपकी विशिष्ट हैशिंग विधि के लिए इंद्रधनुष तालिका बनाना भी असंभव है।
"धीमी" हैशिंग एल्गोरिदम का उपयोग करके पासवर्ड को बेहतर तरीके से सुरक्षित किया जाएगा, जैसे कि वे अधिक जटिल थे, लेकिन यह एक ट्रेडऑफ है, एक बार जब आप धीमेपन के एक निश्चित स्तर पर निर्णय ले लेते हैं तो आप वापस स्केल नहीं कर सकते अन्य चीजों के प्रदर्शन की आवश्यकता है।
जावास्क्रिप्ट का उपयोग करके धीमी हैशिंग क्लाइंटसाइड करना भी संभव है, इस तरह यह एक प्रदर्शन समस्या नहीं होगी, लेकिन विधि को जावास्क्रिप्ट को सक्षम करने की आवश्यकता होगी।
कोई फर्क नहीं पड़ता कि आप क्या चुनते हैं, थोड़ी धीमी गति से कुछ भी बेहतर नहीं है, 1 माइक्रोसॉन्ड के बजाय 1 मिलीसेकंड का उपयोग करें और आपकी सुरक्षा 1000 गुना मजबूत है।
आप bcrypt का उपयोग कर सकते हैं, या आप एक पारंपरिक हैशिंग एल्गोरिदम को बहुत अधिक काम कर सकते हैं, बस यह सुनिश्चित कर लें कि अतिरिक्त कार्य प्राथमिक रूप से स्ट्रिंग कनेक्शन नहीं है।
अंत में, अपने डेटाबेस को चोरी नहीं किया जा सकता है, बहुत से पासवर्ड इतने कमजोर हैं कि वे आसानी से निकाले जाते हैं चाहे आप क्या करें।
धन्यवाद मार्टिन उपयोग करते हैं, मुझे समझ नहीं है कि। यह एक संकीर्ण सवाल था और एक संकीर्ण उत्तर के लायक था। – Hissohathair