ASP.Net convalidare la password con hash salato

voti
38

Così ho seguito queste linee guida su come hash di una password. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Sono stato in grado di hash della password con un sale ho conservato il sale in una banca dati e sto recuperando il sale dal database più che bene. Dove mi sto sgambetto è; se ho capito bene se si hash di una password senza sale che sarebbe venuto fuori lo stesso, se si utilizza lo stesso sale (dal database) con un hash che dovrebbe convalidare e si esce con una password hash diverso.

Domanda: Perché non è possibile ottenere la stessa password quando si utilizza il sale memorizzate nel database?

Codice: il codice sta cercando di convalidare la password utilizzando il sale memorizzati nel database. Ma ho due password diverse.

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));
È pubblicato 11/01/2018 alle 17:00
dall'utente
In altre lingue...                            

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