我正在使用Hashing和Salt来解密密码。这就是我正在使用的方法:
public string CreateSalt(int size)
{
var rng = new RNGCryptoServiceProvider();
var buff = new byte[size];
rng.GetBytes(buff);
return Convert.ToBase64String(buff);
}
public string GenerateHash(string input, string salt)
{
byte[] bytes = Encoding.UTF8.GetBytes(input + salt);
SHA512Managed sha256 = new SHA512Managed();
byte[] hash= sha256.ComputeHash(bytes);
return ByteArrayToHexString(hash);
}
在我对密码进行哈希处理并将其保存到数据库之后,我该如何重新编写密码呢?或者即使我需要彻底改变? 用户将创建他们的密码以登录该网站。我还没有决定忘记密码是如何工作的,所以也许它会重置密码并发送给他们。任何想法,围绕哈希的想法?
答案 0 :(得分:1)
您必须在数据库中存储散列密码和密码salt。当用户登录时,您将获得输入密码,将其与数据库中存储的盐进行哈希处理,然后将结果与存储的哈希密码进行比较。
忘记密码是对的。只需创建一个随机密码并将其发送给用户。