В постоянных усилиях по улучшению моего кода я ищу лучший способ создать и сравнить засоленный пароль в .NET.
Есть ли лучший или более безопасный способ сделать это?
Мой текущий код выглядит следующим образом:
public static string CreateSaltedPassword(string salt, string password)
{
SHA1CryptoServiceProvider SHA1 = null;
SHA1 = new SHA1CryptoServiceProvider();
// Convert the string into an array of bytes
byte[] byteValue = System.Text.Encoding.UTF8.GetBytes(salt + password);
// Compute the hash value
byte[] byteHash = SHA1.ComputeHash(byteValue);
// Dispose the unmanaged cryptographic object
SHA1.Clear();
return Convert.ToBase64String(byteHash);
}
public static bool ComparePasswords(string salt, string password, string storedPassword)
{
string passwordHash = string.Empty;
// Create the hashed password
passwordHash = PasswordProvider.CreateSaltedPassword(
salt, password);
// Compare the passwords
return (string.Compare(storedPassword, passwordHash) == 0);
}