Rfc2898DeriveBytes与密码的Sha2哈希生成

时间:2012-11-15 08:18:29

标签: .net security passwords

我最近知道使用SHA256为salted密码生成密码哈希。在阅读了有关盐渍密码和安全性的内容之后,我在.NET中看到了rfc2898derivebytespasswordderivebytes类。使用rfc2898derivebytes类比使用通常的哈希方法有任何好处(生成salt,生成salted密码,在db中存储)?

1 个答案:

答案 0 :(得分:4)

在现代硬件上可以非常快速地生成标准哈希,例如SHA256。

这通常被认为是一件好事,但有一个缺点:试图破解密码的坏人也可以非常快速地生成这些哈希值,这意味着他们可以使用暴力相对容易地发现您的密码。

密钥派生算法(例如bcryptPBKDF2(又名Rfc2898DeriveBytes)比标准哈希算法。它们在内部使用标准哈希算法 - 在Rfc2898DeriveBytes的情况下使用SHA1 - 但它们迭代数千次以生成派生密钥。

因此,虽然您的机器需要做更多的工作来生成"哈希"使用迭代密钥推导算法,试图破解密码的坏人也需要做更多的工作。这是一件好事。

Rfc2898DeriveBytes课程允许您specify the number of iterations to use(我认为默认值为1,000)。您使用的迭代次数越多,攻击者使用暴力破解您的密码就越难。