Я могу изменить свой введенный пользователем пароль, но я не могу узнать, как сравнить сохраненный хэш и новый хеш для введенного пользователем пароля.Как сравнить два хэша с помощью SHA256Managed?
Это мой хеширования код:
public static string CalculateHash(string clearTextPassword, string salt)
{
//Convert the salted password to a byte array
byte[] saltedHashBytes = Encoding.UTF8.GetBytes(clearTextPassword + salt);
//Use hash algorithm to calulate hash
HashAlgorithm algorithm = new SHA256Managed();
byte[] hash = algorithm.ComputeHash(saltedHashBytes);
//Return the hash as a base64 encoded string to be compared and stored
return Convert.ToBase64String(hash);
}
Как сравнить два хэшей для проверки пароля?
Просто выполните '==' на двух хэшах, помните, что это строки. Есть более безопасные решения, но это слишком сложно, если вы просто используете SHA256. Кстати, я бы рекомендовал вам переключиться на SHA512 –
, простой '==' уязвим для временной атаки. Типично делать поразрядное сравнение, которое повторяется через каждый бит, а не останавливается при первом несоответствии, поэтому время, затрачиваемое на вычисление, не зависит от количества совпадающих битов. – Matthew