मान्य करें मैं सी # के लिए नया हूं और यह मेरा पहला प्रश्न है इसलिए मैं किसी भी गलत पैस के लिए पहले से माफ़ी मांगता हूं।नमकीन हैश
प्रसंग:
जब कोई उपयोगकर्ता रजिस्टरों मैं CreateSaltedHash() विधि कॉल और पाठ क्षेत्र से यह उपयोगकर्ता इनपुट पासवर्ड गुजरती हैं। यह विधि मेरी उपयोगकर्ता तालिका के पासवर्ड कॉलम में संग्रहीत करने से पहले पासवर्ड को लेट और हश करती है।
प्रश्न:
मैं कैसे पासवर्ड सत्यापित करना चाहिए एक उपयोगकर्ता में लॉग इन करने का प्रयास करते समय?
यदि मैं फिर से CreateSaltedHash() विधि को कॉल करता हूं तो यह यादृच्छिक नमक के कारण मेल नहीं खाएगा।
क्या मुझे एक अलग कॉलम में लवण संग्रहित करना चाहिए? क्या मुझे नमकीन हैश उत्पन्न करते समय एक डिलीमीटर का उपयोग करना चाहिए? नमकीन और धोए गए पासवर्ड के खिलाफ इनपुट पासवर्ड को सत्यापित करने का सबसे सुरक्षित तरीका क्या है?
कोड: यह मेरे पास अब तक है।
public class PasswordHash
{
public const int SALT_BYTES = 32;
/*
* Method to create a salted hash
*/
public static byte[] CreateSaltedHash(string password)
{
RNGCryptoServiceProvider randromNumberGenerator = new RNGCryptoServiceProvider();
byte[] salt = new byte[SALT_BYTES];
randromNumberGenerator.GetBytes(salt);
HashAlgorithm hashAlgorithm = new SHA256Managed();
byte[] passwordByteArray = Encoding.UTF8.GetBytes(password);
byte[] passwordAndSalt = new byte[passwordByteArray.Length + SALT_BYTES];
for (int i = 0; i < passwordByteArray.Length; i++)
{
passwordAndSalt[i] = passwordByteArray[i];
}
for (int i = 0; i < salt.Length; i++)
{
passwordAndSalt[passwordByteArray.Length + i] = salt[i];
}
return hashAlgorithm.ComputeHash(passwordAndSalt);
}
public static bool OkPassword(string password)
{
//This is where I want to validate the password before logging in.
}
}
रजिस्टर कक्षा में विधि कॉलिंग। भविष्य तुलना के लिए फिर से उपयोग फिर उसी नमक -
User user= new User();
user.password = PasswordHash.CreateSaltedHash(TextBoxUserPassword.Text);
'क्या मुझे एक अलग कॉलम में लवण संग्रहित करना चाहिए' - हां। फिर उस पर संदर्भित किया। – TheGeekZn
आप समझते हैं कि आपकी हैशिंग विधि के साथ कोई गंभीर समस्या है? पासवर्ड को सुरक्षित करने के लिए आपको वास्तव में एक हैशिंग एल्गोरिदम डिज़ाइन का उपयोग करना चाहिए, आपकी वर्तमान पसंद एक अच्छी पसंद नहीं है। –
मैंने आपका शीर्षक संपादित किया है। कृपया देखें, "[प्रश्नों में उनके शीर्षक में" टैग "शामिल होना चाहिए?] (Http://meta.stackexchange.com/questions/19190/)", जहां आम सहमति है "नहीं, उन्हें नहीं करना चाहिए"। –