ASP.Net validar senha com hash de salgados

votos
38

Então, eu tenho vindo a seguir estas orientações sobre como criptografar a senha. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Eu era capaz de criptografar a senha com um sal I armazenado o sal em um banco de dados e estou recuperando o sal da base de dados muito bem. Onde eu estou ficando desarmado é; se eu entendi corretamente se você hash a senha sem um sal que sairia o mesmo, se você usar o mesmo sal (do banco de dados) com um hash deve validar e ele sai com um hash de senha diferente.

Pergunta: Por que não pode obter a mesma senha ao usar o sal armazenado no banco de dados?

Código: O código está tentando validar a senha utilizando o sal armazenado no banco de dados. Mas tenho duas senhas 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 11/01/2018 em 17:00
usuário
Em outras línguas...                            

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