3

我最近知道使用 SHA256 为加盐密码生成密码哈希。在阅读了一些关于加盐密码和安全性的内容后,我看到了 .NET 中rfc2898derivebytespasswordderivebytes类。使用rfc2898derivebytes类比通常的散列方法(生成盐,生成盐密码,都存储在数据库中)有什么优势吗?

4

1 回答 1

5

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

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

bcryptPBKDF2 (aka Rfc2898DeriveBytes)等密钥派生算法比标准哈希算法慢得多。他们在内部使用标准哈希算法——在这种情况下为 SHA1——Rfc2898DeriveBytes但他们迭代数千次以生成派生密钥。

因此,尽管您的机器需要做更多的工作来使用迭代密钥派生算法生成“哈希”,但试图破解您密码的坏人也必须做更多的工作。这是一件好事。

该类Rfc2898DeriveBytes允许您指定要使用的迭代次数(我认为默认值为 1,000)。您使用的迭代次数越多,攻击者就越难使用暴力破解您的密码。

于 2012-11-15T10:38:12.710 回答