ASP.Net bestätigt Passwort mit gesalzener Hash

stimmen
38

So folgende Ich habe diese Richtlinien, wie ein Passwort Hash. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Ich konnte das Passwort mit einem Salz Hash ich das Salz in einer Datenbank gespeichert sind, und ich bin das Abrufen des Salzes aus der Datenbank nur in Ordnung. Wo erhalte ich gestolpert ist; wenn ich das richtig verstehen, wenn Sie ein Passwort ohne Salz gehasht wäre es das gleiche herauskommen, wenn Sie das gleiche Salz (aus der Datenbank) verwenden, um mit einem Hash sollte es validieren, und es kommt mit einem anderen Hash-Passwort aus.

Frage: Warum kann ich nicht das gleiche Passwort erhalten , wenn die in der Datenbank gespeichert Salz?

Code: Der Code versucht , das Passwort unter Verwendung des Salzes in der Datenbank gespeichert zu validieren. Aber ich habe zwei verschiedene Passwörter.

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));
Veröffentlicht am 11/01/2018 um 17:00
vom benutzer
In anderen Sprachen...                            

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