Итак, я запускаю следующую настройку, когда пользователь входит в систему:
Когда создается новый пользователь, пароль получает сгенерированный хеш и объединяется с вновь созданным Salt. HashedPassword + Salt хранится в столбце, отдельном от столбца Salt. Затем я вызываю метод VerifyHashedPassword(string storedHashedPass, String password)
storedHashedPass
- это сохраненный хешированный пароль (с солью), а password
- это открытый текстовый пароль, который пользователь вводил при входе в систему с конкатенацией соли, полученной из хранилища.
Но когда я пытаюсь реализовать это, он выдает 'System.FormatException'
Может кто-нибудь помочь мне понять, что я делаю не так?
public static bool VerifyHashedPassword(string hashPassword, String password)
{
return System.Web.Helpers.Crypto.VerifyHashedPassword(hashPassword, password);
}
public static string GetSalt()
{
var random = new RNGCryptoServiceProvider();
int max_length = 32;
byte[] salt = new byte[max_length];
random.GetNonZeroBytes(salt);
return Convert.ToBase64String(salt);
}
public static string hashPassword(string password)
{
return System.Web.Helpers.Crypto.HashPassword(password ?? "");
}