ASP.Net ověření hesla se slanou hash

hlasů
38

Tak jsem po těchto pokynů o tom, jak hash hesla. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Byl jsem schopen hash hesla se solí I uložené sůl v databázi a jsem vyhledával sůl z databáze v pohodě. Kde jsem dostat zakopl je; pokud tomu rozumím správně, pokud hash hesla bez soli by to vyjít totéž, pokud používáte stejný sůl (z databáze) s hash je třeba ověřit, a to vyjde s jiným hash hesla.

Otázka: Proč není možné při použití soli uložené v databázi mám stejné heslo?

Kód: Kód se snaží ověřit heslo pomocí soli uložené v databázi. Ale mám dvě různá hesla.

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));
Položena 11/01/2018 v 17:00
uživatelem
V jiných jazycích...                            

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