这是c#

时间:2017-11-25 22:56:36

标签: c# .net

    public static string GenerateHash(string password, string salt, int iterations)
    {
        var pbkdf2 = new Rfc2898DeriveBytes(password, Convert.FromBase64String(salt), iterations);
        var keyBytes = pbkdf2.GetBytes(32);
        return Convert.ToBase64String(keyBytes);
    }

我正在获取一个用于zip存档的哈希密码,但我不知道我是否真的正确地检索了哈希。

1 个答案:

答案 0 :(得分:1)

嗯,我认为这个问题的答案是:绝对是的。 为了全面评估您的方法,有一些缺少的部分会很有趣......特别是如何构建盐以及如何验证密码。

我就是这样做的:

public static String HashPassword(String password)
{
    Byte[] salt = new Byte[24];

    RNGCryptoServiceProvider cryptoProvider = new RNGCryptoServiceProvider();
    cryptoProvider.GetBytes(salt);

    Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, salt, 1000);

    return Convert.ToBase64String(pbkdf2.GetBytes(20)); // Size of PBKDF2-HMAC-SHA-1 Hash 
}