gpt4 book ai didi

c# - 2 等于 byte[] 不返回 true

转载 作者:太空狗 更新时间:2023-10-29 19:56:33 25 4
gpt4 key购买 nike

我在登录时尝试验证某人的密码。

我获取输入的密码并检索用户保存的散列密码和密码盐。

然后我用保存的盐对输入的密码进行哈希运算,看它是否等于保存的密码。

但是,即使 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;
}

最佳答案

你应该比较数组的每个字节,你可以做一个简单的循环,或者使用 SequenceEqual Linq 扩展方法(如果可用):

public static bool VerifyPassword(byte[] newPassword, byte[] storedPassword,
byte[] storedSalt)
{
byte[] password = CreateHashedPassword(newPassword, storedSalt);

return password.SequenceEqual(storedPassword);
}

关于c# - 2 等于 byte[] 不返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2339744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com