0

我有一个包含用户名、散列密码及其盐的表,现在在我的应用程序中,我想验证下面带有散列的纯密码是我尝试过的,但不会生成相同的散列,请建议我该如何解决这个问题。

byte[] bIn = Encoding.Unicode.GetBytes(Password);
byte[] bSalt = Convert.FromBase64String(SaltValue);
byte[] bAll = new byte[bSalt.Length + bIn.Length];

Buffer.BlockCopy(bSalt, 0, bAll, 0, bSalt.Length);
Buffer.BlockCopy(bIn, 0, bAll, bSalt.Length, bIn.Length);

HMACSHA256 s = new HMACSHA256();

return Convert.ToBase64String(s.ComputeHash(bAll));
4

1 回答 1

2

您应该创建一种方法来使用盐对密码进行哈希处理。然后使用此方法对初始密码进行加密。如果您之后重复使用此方法验证密码,它将始终匹配。

确保您从数据库中为该帐户检索到正确的盐。

于 2013-06-18T13:33:31.040 回答