在.net中哈希密码

时间:2015-08-10 06:35:03

标签: .net windows security cryptography

我想将密码存储在数据库中。以下代码的安全性如何:

    static string ComputeHash(string password, string salt, int iteration)
    {
        Rfc2898DeriveBytes hash = new Rfc2898DeriveBytes(password, Encoding.UTF8.GetBytes(salt), iteration);
        return Convert.ToBase64String(hash.GetBytes(16));
    }

1 个答案:

答案 0 :(得分:0)

Rfc2898DeriveBytes实现了PBKDF2。在PBKDF2上不太可能进行旁道分析,所以基本上你要问的是PBKDF2的安全性如何。它是NIST也接受的已知安全算法,需要随机盐,高迭代次数和明确定义的密码编码。

现在我们不知道您的参数,但Encoding.UTF8.GetBytes(salt)并不是好兆头,因为盐应该包含足够的随机性。虽然新生成的GUID可以解决问题,但它来自String的可能性有点小。最后:我们不知道迭代次数; UTF-8很好。