我最近知道使用SHA256为salted密码生成密码哈希。在阅读了有关盐渍密码和安全性的内容之后,我在.NET中看到了rfc2898derivebytes
和passwordderivebytes
类。使用rfc2898derivebytes
类比使用通常的哈希方法有任何好处(生成salt,生成salted密码,在db中存储)?
答案 0 :(得分:4)
在现代硬件上可以非常快速地生成标准哈希,例如SHA256。
这通常被认为是一件好事,但有一个缺点:试图破解密码的坏人也可以非常快速地生成这些哈希值,这意味着他们可以使用暴力相对容易地发现您的密码。
密钥派生算法(例如bcrypt和PBKDF2(又名Rfc2898DeriveBytes
)比标准哈希算法慢。它们在内部使用标准哈希算法 - 在Rfc2898DeriveBytes
的情况下使用SHA1 - 但它们迭代数千次以生成派生密钥。
因此,虽然您的机器需要做更多的工作来生成"哈希"使用迭代密钥推导算法,试图破解密码的坏人也需要做更多的工作。这是一件好事。
Rfc2898DeriveBytes
课程允许您specify the number of iterations to use(我认为默认值为1,000)。您使用的迭代次数越多,攻击者使用暴力破解您的密码就越难。