ASP.Net validar la contraseña de almohadilla salado

votos
38

Así que he estado siguiendo estas directrices sobre la forma de hash de una contraseña. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Pude hash de la contraseña con una sal Almacené la sal en una base de datos y estoy recuperación de la sal de la base de bien. ¿Dónde estoy consiguiendo es un tropiezo; si lo entiendo correctamente si HASHED una contraseña sin una sal que saldría de la misma, si se utiliza la misma sal (de base de datos) con un hash debe validar, y viene con una contraseña con algoritmo hash diferente.

Pregunta: ¿Por qué no puedo obtener la misma contraseña cuando se utiliza la sal almacenada en la base de datos?

Código: El código está tratando de validar la contraseña utilizando la sal almacenada en la base de datos. Pero consigo dos contraseñas diferentes.

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));
Publicado el 11/01/2018 a las 14:00
por usuario
En otros idiomas...                            

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