SHA1哈希码比较失败

时间:2018-08-19 04:48:49

标签: c#

我在.NET Core应用程序中编写了两种方法-MakeHashCompareHash。现在使用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;
    }
}

1 个答案:

答案 0 :(得分:1)

好吧,如果您需要一些快速的解决方案而不在数据库上存储盐,那么可以尝试以下代码。这对我有用。但是强烈建议使用盐在它们之间进行匹配。因为这是关于安全性的,所以您应该小心并付出更多努力。我的示例只是为您提供一个想法,而不是用于生产用途。

app
相关问题