ASP.Net valider le mot de passe avec hachage Salted

voix
38

Donc , j'ai suivi ces directives sur la façon de hachage un mot de passe. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

J'ai pu hachage le mot de passe avec un sel je stockaient le sel dans une base de données et je suis en train de récupérer le sel de la base de données très bien. Là où je me fais trébuché est; si je comprends bien si vous HASHED un mot de passe sans sel, il sortirait même, si vous utilisez le même sel (base de données) avec un hachage, il doit valider, et il vient avec un autre mot de passe haché.

Question: Pourquoi ne puis - je obtenir le même mot de passe lors de l' utilisation du sel stocké dans la base de données?

Code: Le code tente de valider le mot de passe en utilisant le sel stocké dans la base de données. Mais je reçois deux mots de passe différents.

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));
Créé 11/01/2018 à 17:00
utilisateur
Dans d'autres langues...                            

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