我在.NET Core应用程序中编写了两种方法-MakeHash
和CompareHash
。现在使用MakeHash
我可以成功转换SHA1代码,但是问题是我尝试比较哈希代码的方式总是返回false。这意味着CompareHash
方法无法比较纯代码和SHA1代码。您能告诉我如何解决CompareHash
以便能够在纯文本和SHA1哈希码之间进行比较吗? CompareHash
方法在做什么?预先感谢
public static string MakeHash(string str)
{
// generate a 128-bit salt using a secure PRNG
byte[] salt = new byte[128 / 8];
using (var rng = RandomNumberGenerator.Create())
{
rng.GetBytes(salt);
}
// derive a 256-bit subkey (use HMACSHA1 with 10,000 iterations)
string hashed = Convert.ToBase64String(KeyDerivation.Pbkdf2(
password: str,
salt: salt,
prf: KeyDerivationPrf.HMACSHA1,
iterationCount: 10000,
numBytesRequested: 256 / 8));
return hashed;
}
public static bool CompareHash(string plainString, string hashString)
{
if (MakeHash(plainString)==hashString)
{
return true;
}
else
{
return false;
}
}
答案 0 :(得分:1)
好吧,如果您需要一些快速的解决方案而不在数据库上存储盐,那么可以尝试以下代码。这对我有用。但是强烈建议使用盐在它们之间进行匹配。因为这是关于安全性的,所以您应该小心并付出更多努力。我的示例只是为您提供一个想法,而不是用于生产用途。
app