我可以哈希用户输入的密码,但是我无法找到如何比较存储的哈希值和用户输入的密码的新哈希值。
这是我的哈希码:
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);
}
如何比较两个哈希值来验证密码?
答案 0 :(得分:1)
你存储了哈希和盐,对吗?
现在,当用户尝试登录时,您可以使用存储的salt再次运行方法,并且方法的输出应该与数据库中存储的哈希相匹配。
答案 1 :(得分:1)
首先,您应该使用散列值存储salt。
接下来,当用户尝试使用某些login
和password
进行身份验证时,您可以使用下一个方案:
GetUser(login)
)。用户类应包含登录名,哈希密码和salt。CalculateHash()
执行password
,并从上一步检索到的User类执行salt。CalculateHash()
方法。如果哈希等于,那么用户已成功通过身份验证。