gpt4 book ai didi

c# - 比较哈希密码

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:35 25 4
gpt4 key购买 nike

我使用的是 .net 3.5。这里的问题是我似乎无法获得匹配的密码。我已尝试在两者上使用 ComputeHash 方法,但它会生成不同的哈希值。就像现在一样,阵列的大小不同。 (显然它们基于相同的字符串)。我做错了什么? (“密码”是用户输入的 byte[] 参数)

object dataPassword = database.ExecuteScalar("GetUserPassword", new object[] {userName});
if(dataPassword != null && !(dataPassword is DBNull))
{
SHA1Managed hashProvider = new SHA1Managed();
byte[] hashedPassword = (byte[])dataPassword;
byte[] hash = hashProvider.ComputeHash(password);
result = hashedPassword.Equals(hash);

}

最佳答案

你无法比较 byte[]像那样。它只是比较引用。您应该使用循环或使用 IEnumerable<T>.SequenceEqual扩展方法:

result = hashedPassword.SequenceEqual(hash);

旧方法(LINQ 之前):

static bool ArrayEquals<T>(T[] first, T[] second) {
if (first == null && second == null) return true;
if (first == null || second == null) return false;
if (first.Length != second.Length) return false;
for (int i = 0; i < first.Length; ++i)
if (first[i] != second[i]) return false;
return true;
}

关于c# - 比较哈希密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/985651/

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