आप मुझे बता सकते है, तो निम्नलिखित एक अच्छा तरीका सुरक्षित रूप से एक पासवर्ड हैश करने के लिए एक डेटाबेस में संग्रहीत किया जा रहा है:क्या यह पासवर्ड हैश के लिए एक सुरक्षित तरीका है?
public string CreateStrongHash(string textToHash) {
byte[] salt =System.Text.Encoding.ASCII.GetBytes("TeStSaLt");
Rfc2898DeriveBytes k1 = new Rfc2898DeriveBytes(textToHash, salt, 1000);
var encryptor = SHA512.Create();
var hash = encryptor.ComputeHash(k1.GetBytes(16));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++) {
sb.Append(hash[i].ToString("x2"));
}
return sb.ToString();
}
पहले से कई धन्यवाद।
आदर्श रूप से मुझे लगता है कि आपके पास प्रति उपयोगकर्ता एक अलग नमक होना चाहिए, और डेटाबेस में भी स्टोर करना चाहिए। – Bridge
क्षमा करें अगर मैं थोड़ा घना हो रहा हूं, लेकिन अगर किसी को डेटाबेस तक पहुंच प्राप्त होती है, तो नमक को संग्रहित करने से किसी के लिए एन्क्रिप्शन को क्रैक करना आसान नहीं होता है? – ScubaSteve2012
@ ScubaSteve2012 नमक पूर्व-गणना वाले हैश हमलों ("इंद्रधनुष तालिकाओं") को रोकता है। चूंकि पासवर्ड नमकीन होते हैं, इसलिए आपकी इंद्रधनुष तालिका मूल पासवर्ड को समझने में मदद करने में बेकार होगी। आपको इस हैश का उपयोग करके एक नई इंद्रधनुष तालिका बनाना होगा, जो कि बहुत अधिक क्रूर बल का हमला है। – Oleksi