ASP.Net проверки пароля с соленого хэша

голоса
38

Таким образом , я следовал этим рекомендациям о том , как хэш пароля. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Я был в состоянии хэша пароля с солью я хранится солью в базе данных, и я извлечение соли из базы данных просто отлично. Где я получаю подножку есть; если я понимаю это правильно, если вы хэшируются пароль без соли она выйдет то же самое, если вы используете один и тот же соль (из базы данных) с хэш он должен подтвердить, и она выходит с другой хэшированном пароль.

Вопрос: Почему я не могу получить тот же пароль при использовании соли , хранящейся в базе данных?

Код: Код пытается проверить пароль с помощью соли , хранящейся в базе данных. Но я получаю две разные пароли.

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));
Задан 11/01/2018 в 17:00
пользователем
На других языках...                            

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