Я просто возился с простым хэшированием, потому что я новичок в этой идее, и у меня есть следующее:
public string Password {get;set;}
public static string Hash(string password)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(password, "sha1");
}
public bool Authenticate(AccountDataContext context)
{
var password = context.UserAccounts.FirstOrDefault(p => p.UserAccountUID == UserAccountUID).Password;
var hash = Hash(Password);
return password.Equals(hash);
}
ПРИМЕЧАНИЕ Это не рабочий код, поэтому я не беспокоюсь о том, насколько он безопасен в настоящее время ...
Прямо сейчас, когда я первоначально хеширую пароль, когда пользователь регистрируется, например, следующее
var password = "Password";
var hashedPassword = UserAccount.Hash(password)
Тогда я сохраню это у пользователя.
Когда я аутентифицировал своего пользователя, я вызывал метод Authenticate (), и я думал, что он вернет тот же хеш, потому что он передает то же значение в метод Hash (), но они выдаются по-разному.
Есть идеи, почему хеш-функция будет возвращать два разных хеша для одной и той же строки?