我正在尝试在登录时验证某人的密码.
我取输入的密码并检索用户保存的哈希密码和密码盐.
然后我用保存的盐哈希输入的密码,看它是否等于保存的密码.
但是,即使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) 我有一个方法来创建哈希密码.然而它在salt.CopyTo崩溃(pwd,0); 说目标字节[]太小了.我该如何解决这个问题?
public static byte[] CreateHashedPassword(string password, byte[] salt)
{
SHA1 sha1 = SHA1.Create();
byte[] pwd = CustomHelpers.StringToByteArray(password);
salt.CopyTo(pwd, 0);
sha1.ComputeHash(pwd);
return pwd;
}
Run Code Online (Sandbox Code Playgroud)