ASP.Net validere passord med saltet hash

stemmer
38

Så jeg har fulgt disse retningslinjene for hvordan du hasj et passord. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Jeg var i stand til hasj passordet med salt jeg lagret salt i en database, og jeg hente salt fra databasen helt fint. Hvor jeg får utløst opp er; hvis jeg forstår dette riktig hvis du hashet passord uten salt det ville komme ut samme, hvis du bruker det samme salt (fra database) med en hash det skal validere, og det kommer ut med en annen hashet passord.

Spørsmål: Hvorfor kan jeg ikke få det samme passordet når du bruker saltet lagret i databasen?

Kode: Koden prøver å validere passordet ved hjelp av salt lagret i databasen. Men jeg får to forskjellige passord.

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));
Publisert på 11/01/2018 klokken 17:00
bruker
På andre språk...                            

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