मैं लॉगिन करते समय किसी के पासवर्ड को सत्यापित करने कोशिश कर रहा हूँ वापसी नहीं करता है।2 बराबर बाइट [] सच
मेरे द्वारा डाला पासवर्ड लेने के लिए और पुनः प्राप्त उन टुकड़ों में बांटा पासवर्ड और पासवर्ड नमक बचा लिया।
फिर मैंने सहेजे गए नमक के साथ दर्ज पासवर्ड हैश यह देखने के लिए है कि यह सहेजे गए पासवर्ड के बराबर है या नहीं।
हालांकि, बाइट [] संग्रहीत पासवर्ड बिल्कुल बाइट [] दर्ज किया गया है, पासवर्ड में, यह एक बूल में सच नहीं होता है और इसलिए उपयोगकर्ता को सत्यापित नहीं करता है। ऐसा क्यों है?
public static bool VerifyPassword(byte[] newPassword, byte[] storedPassword, byte[] storedSalt)
{
byte[] password = CreateHashedPassword(newPassword, storedSalt);
if (!password.Equals(storedPassword))
return false;
return true;
}
, मैं पासवर्ड और storedPassword की लंबाई की तुलना होगा:
आप की तरह कुछ की जरूरत है। यदि संग्रहीत पासवर्ड पासवर्ड से छोटा है तो आप सरणी के अंत से पहले पढ़ सकते हैं। फ्लिप पक्ष पर, यदि पासवर्ड छोटा है, तो यह केवल पहले कुछ बाइट्स की तुलना कर रहा है। यदि आप पासवर्ड को कम आकार के लिए प्राप्त कर सकते हैं, तो संग्रहीत पासवर्ड के उपसर्ग के साथ मिलान करना संभव हो सकता है। जैकब – TheJacobTaylor
आम तौर पर, पासवर्ड हैश एल्गोरिदम हमेशा बाइट्स की एक ही संख्या के आउटपुट का उत्पादन करते हैं। उदाहरण के लिए, एक एमडी 5 हैश हमेशा 16 बाइट होता है, इसलिए हैश की लंबाई की जांच करने की आवश्यकता नहीं है। – Gabe