Så jeg har fulgt disse retningslinjene for hvordan du hasj et passord. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing
Jeg var i stand til hasj passordet med salt jeg lagret salt i en database, og jeg hente salt fra databasen helt fint. Hvor jeg får utløst opp er; hvis jeg forstår dette riktig hvis du hashet passord uten salt det ville komme ut samme, hvis du bruker det samme salt (fra database) med en hash det skal validere, og det kommer ut med en annen hashet passord.
Spørsmål: Hvorfor kan jeg ikke få det samme passordet når du bruker saltet lagret i databasen?
Kode: Koden prøver å validere passordet ved hjelp av salt lagret i databasen. Men jeg får to forskjellige passord.
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));