Как я могу сделать хэш и соль для управления безопасными учетными данными в C# с SQL Server 2008

Я хотел бы знать, как я могу сделать посол и хэширование паролей? Я нашел в Интернете много примеров по этому поводу, но я все еще не могу сделать это хорошо.

У меня есть этот код для генерации соли и хэша

public static byte[] GetSalt()
{
    var p = new RNGCryptoServiceProvider();
    var salt = new byte[16];
    p.GetBytes(salt);
    return salt;    
}

public static byte [] GetSecureHash(string password, byte[] salt)
{
    Rfc2898DeriveBytes PBKDF2 = new Rfc2898DeriveBytes(password, salt);
    return PBKDF2.GetBytes(64);
}

Но тогда я не знаю, где я использую эти методы, у меня есть это:

SqlParameter SalContraseña = new SqlParameter("@SalContraseña", SqlDbType.Binary, 16);
SalContraseña.Value = GetSalt();
cmd.Parameters.Add(SalContraseña);

SqlParameter HashContraseña = new SqlParameter("@HashContraseña",SqlDbType.Binary, 64);
HashContraseña.Value = GetSecureHash(Password,byte[]);
cmd.Parameters.Add(HashContraseña);

Здесь я применяю пароль и хэш SqlParameter, но я не уверен, что это правильно или это правильная форма для этого.

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

1 ответ

Вам нужно будет хранить соль, которую вы использовали для генерации хэша исходного пароля. И затем, когда пользователь пытается войти в систему, вы извлекаете это солт-значение и хешируете введенный им пароль, используя тот же алгоритм хэширования и то же значение, которое изначально использовалось. Если полученный хеш совпадает с хешем сохраненного пользователя, аутентификация успешна.

Другие вопросы по тегам