ASP.Net valideren wachtwoord met gezouten hash

stemmen
38

Dus heb ik de volgende richtlijnen over hoe je een wachtwoord hash. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Ik was in staat om het wachtwoord met een zout Ik opgeslagen het zout in een database en ik het ophalen van het zout uit de database prima hash. Waar krijg ik gestruikeld is; als ik dit juist begrip als u een wachtwoord zonder zout hashed zou komen hetzelfde, als je dezelfde zout te gebruiken (uit de database) met een hekje moet valideren, en het komt met een ander hashed wachtwoord.

Vraag: Waarom kan ik niet hetzelfde wachtwoord krijgen bij het gebruik van het zout is opgeslagen in de database?

Code: De code probeert om het wachtwoord in met het zout opgeslagen in de database te valideren. Maar ik krijg twee verschillende wachtwoorden.

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));
De vraag is gesteld op 11/01/2018 om 17:00
user
In andere talen...                            

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