我有一个基于Rfc2898DeriveBytes的密码散列机制(基于此处详细说明的代码:http://crackstation.net/hashing-security.htm)。在内部,这个类使用SHA1,其中CrackStation链接确实指示SHA1是“旧”,但也指出,尽管Rfc2898DeriveBytes在内部使用它,但Rfc2898DeriveBytes仍然是一个很好的机制。
我的一位客户的安全部门听说“SHA1已被盗用”(具体而言,为了签署文件以便通过互联网传输,SHA1在某些情况下被击败 - 事实是这个“漏洞”不适用于密码哈希对安全部门来说无关紧要)。因此,他们要求我们改变我们的密码散列机制以使用SHA2。
目前,.Net框架没有内部使用SHA2(或SHA256等)的Rfc2898DeriveBytes。我知道我可以使用反射来获取此类的源代码并进行更改,但我始终被告知加密的第一条规则是“不要自己增长”。
这主要是我的客户的政治要求,而非技术要求,通过在通过Rfc2898DeriveBytes运行密码之前通过SHA2哈希运行密码可以轻松满足。但是,我对密码学知之甚少,不知道这可能是坏事 - 实际上可能导致客观上不太安全的密码哈希。
有没有人知道使用SHA2的Rfc2898DeriveBytes等效类?或者,是否有人知道在Rfc2898DeriveBytes之前通过SHA2哈希运行密码是否完全安全?
答案 0 :(得分:0)
从" SecurityDriven.NET"下载免费代码示例。书。找到 PBKDF2 类,其中包含 HMAC 工厂。可用工厂包括 SHA2 ( 256 , 384 , 512 )。
在Rfc2898DeriveBytes
之前通过 SHA2 哈希运行密码不是正确的事情,即使这不太可能是最弱的部分你正在做(你正在丢失密码熵)。