我正在尝试在登录时验证某人的密码.
我取输入的密码并检索用户保存的哈希密码和密码盐.
然后我用保存的盐哈希输入的密码,看它是否等于保存的密码.
但是,即使byte [] storedPassword与byte [] enteredPassword完全相同,它也不会在bool中返回true,因此不会验证用户.这是为什么?
public static bool VerifyPassword(byte[] newPassword, byte[] storedPassword, byte[] storedSalt)
{
byte[] password = CreateHashedPassword(newPassword, storedSalt);
if (!password.Equals(storedPassword))
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
CMS*_*CMS 13
您应该比较数组的每个字节,您可以进行简单的循环,或使用SequenceEqualLinq Extension方法(如果可用):
public static bool VerifyPassword(byte[] newPassword, byte[] storedPassword,
byte[] storedSalt)
{
byte[] password = CreateHashedPassword(newPassword, storedSalt);
return password.SequenceEqual(storedPassword);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2509 次 |
| 最近记录: |