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