gpt4 book ai didi

C#:在对用户进行身份验证时,将密码哈希与用户输入的不同大小进行比较

转载 作者:行者123 更新时间:2023-12-04 03:07:07 25 4
gpt4 key购买 nike

我已经进行了用户注册,我在其中添加了用户密码并使用 SHA256 对其进行了哈希处理。稍后,当用户需要登录我的系统时,我需要对他的密码进行加盐和哈希处理,所以我:1.从数据库中检索盐“字符串”2.将salt转换成bytes3. 创建一个新的 byte[] = [inputPassword.length + salt.length]4. 并对其进行哈希处理。

现在新散列比原始散列短...(使用相同的散列函数)

鉴于这些信息,您认为问题可能是什么......将盐作为 CHAR 存储在我的数据库中是错误的,如果是,我应该保存什么或如何保存?

注意:两个哈希值都是在字节级别进行比较的。注:所有用户信息都以CHAR形式保存在数据库中password和salt

提前谢谢你

最佳答案

您可以从转换为 base 64 字符串的 Guid 生成盐,然后将其作为 char 保存在数据库中。我使用 nvarchar 通过 .NET 字符串最大化我的选项。

然后你可以实现类似这样的东西来生成原始密码哈希,并在用户登录时比较哈希:

    public static byte[] GetHash(string password, string salt)
{
byte[] unhashedBytes = Encoding.Unicode.GetBytes(String.Concat(salt, password));

SHA256Managed sha256 = new SHA256Managed();
byte[] hashedBytes = sha256.ComputeHash(unhashedBytes);

return hashedBytes;
}

public static bool CompareHash(string attemptedPassword, byte[] hash, string salt)
{
string base64Hash = Convert.ToBase64String(hash);
string base64AttemptedHash = Convert.ToBase64String(GetHash(attemptedPassword, salt));

return base64Hash == base64AttemptedHash;
}

关于C#:在对用户进行身份验证时,将密码哈希与用户输入的不同大小进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8890902/

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