3

我有一个基于 Rfc2898DeriveBytes 的密码散列机制(基于此处详述的代码:http://crackstation.net/hashing-security.htm 。在内部,此类使用 SHA1,CrackStation 链接确实表明 SHA1 是“旧的”,但也指出,尽管 Rfc2898DeriveBytes 在内部使用它,但 Rfc2898DeriveBytes 仍然是一个很好的机制。

我的一个客户的安全部门听说“SHA1 已被攻破”(具体来说,为了签署文件以通过 Internet 传输,SHA1 在某些情况下已被击败 - 事实上,这种“漏洞" 不适用于密码哈希对安全部门无关紧要)。因此,他们要求我们更改密码散列机制以使用 SHA2。

目前,.Net 框架没有在内部使用 SHA2(或 SHA256 等)的 Rfc2898DeriveBytes 等效项。我知道我可以使用反射来获取此类的源代码并对其进行更改,但我一直被告知加密的第一条规则是“不要自己开发”。

这主要是我的客户的政治需求,而不是技术需求,可以通过在通过 Rfc2898DeriveBytes 运行密码之前通过 SHA2 哈希运行密码来轻松满足。但是,我对密码学的了解不足,无法知道这是否可能是坏事——实际上可能会导致客观上不太安全的密码哈希。

有谁知道使用 SHA2 的 Rfc2898DeriveBytes 等效类?或者,有谁知道在 Rfc2898DeriveBytes 之前通过 SHA2 哈希运行密码是否完全安全?

4

1 回答 1

0

从“ SecurityDriven.NET ”一书中下载免费的代码示例。找到采用HMAC工厂的PBKDF2类。可用的工厂包括SHA2 ( 256 , 384 , 512 )。

之前通过SHA2哈希运行密码Rfc2898DeriveBytes不是正确的做法,即使这不太可能是您正在做的任何事情中最薄弱的部分(您会丢失密码熵)

于 2014-10-10T02:34:27.473 回答