तो मैं कैसे एक पासवर्ड हैश करने के लिए पर इन दिशानिर्देशों का पालन किया गया है। https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing
मैं एक नमक मैं एक डेटाबेस में नमक संग्रहीत और मैं डेटाबेस ठीक से नमक को पुन: प्राप्त कर रहा हूँ के साथ पासवर्ड हैश करने के लिए कर रहा था। मैं कहां से ऊपर फिसल कर रहा हूँ है, अगर मैं इस बात को समझ सही ढंग से यदि आप एक नमक के बिना पासवर्ड के टुकड़ों में बांटा यह एक ही बाहर आ जाएगा, यदि आप एक ही नमक (डेटाबेस से) एक हैश यह सत्यापित करना चाहिए के साथ उपयोग करते हैं, और यह एक अलग टुकड़ों में बंटी पासवर्ड के साथ बाहर आता है।
प्रश्न: जब डेटाबेस में संग्रहीत नमक का उपयोग कर क्यों नहीं मैं एक ही पासवर्ड का मिल सकता है?
कोड: कोड डेटाबेस में संग्रहीत नमक का उपयोग कर पासवर्ड मान्य करने के लिए कोशिश कर रहा है। लेकिन मैं दो अलग-अलग पासवर्ड मिलता है।
string password = txtSignPass.Text;
string email = txtSignEmail.Text;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[db].ToString());
SqlCommand cmd = new SqlCommand(SELECT * FROM users WHERE email = @email;, conn);
cmd.Parameters.AddWithValue(@email, email);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
byte[] salt = Encoding.UTF8.GetBytes(dr[salt].ToString());
string hashed = Convert.ToBase64String(KeyDerivation.Pbkdf2(
password: password,
salt: salt,
prf: KeyDerivationPrf.HMACSHA1,
iterationCount: 10000,
numBytesRequested: 256 / 8));