ASP.Net validați parola cu hash sărați

voturi
38

Așa că am urmărit aceste linii directoare cu privire la modul de a hash o parolă. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Am fost în stare să hash parola cu o sare am stocat sarea într-o bază de date și am recuperarea sării din baza de date foarte bine. În cazul în care eu sunt obtinerea piedică este; dacă am înțeles acest lucru corect dacă trunchiată o parolă, fără sare ar ieși la fel, dacă utilizați aceeași sare (din baza de date), cu un hash ar trebui să valideze, și vine cu o parolă diferită trunchiată.

Întrebare: De ce nu pot obține aceeași parolă atunci când se utilizează sarea stocată în baza de date?

Cod: Codul încearcă să valideze parola utilizând sarea stocată în baza de date. Dar am obține două parole diferite.

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));
Întrebat 11/01/2018 la 17:00
de către utilizator
În alte limbi...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more