Я наткнулся на следующий фрагмент, который шифрует пароль пользователя. Это то, что я хочу сделать, потому что я не хочу хранить пароль пользователя в базе данных без какого-либо шифрования.Шифрование в C#
Это прекрасно работает для того, чего я хочу достичь, но мой вопрос заключается в следующем: как я могу его зашифровать, чтобы убедиться, что значение, которое они ввели в поле пароля, соответствует?
// Hash the password details of the user!
private static string CreatePasswordHash(string pwd, string salt)
{
string saltAndPwd = string.Concat(pwd, salt);
string hashedPwd =
FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPwd, "SHA1");
hashedPwd = string.Concat(hashedPwd, salt);
return hashedPwd;
}
я называю выше, как этот
string password = CreatePasswordHash(TxtPassword.Text, "1579");
пароль, то становится чем-то вроде этого: 566DAB495AD0747B49865F9177E430DFAD63CA281579
Так как я не-шифровать, что?
Спасибо за ваше время.
Вы не зашифруете. Вы вводите пароль, введенный пользователем, с той же солью, и проверьте, совпадает ли хэш с тем, что вы храните в db. – CodesInChaos
Вы не можете (и не должны) это делать. Причина, по которой люди используют хеши, состоит в том, что их невозможно отменить. – zerkms
Используйте 'Rfc2898DeriveBytes' для хеширования паролей, а не' HashPasswordForStoringInConfigFile' – CodesInChaos