我有一个基于Rfc2898DeriveBytes的密码哈希机制(基于下面详述的代码:http://crackstation.net/hashing-security.htm)。在内部,这个类使用SHA1 -- CrackStation链接确实表明SHA1是“旧的”,但也指出,尽管Rfc2898DeriveBytes在内部使用它,但Rfc2898DeriveBytes仍然是一种很好的机制。
我的一位客户的安全部门听说,"SHA1被破坏了“(具体来说,为了签署一份文件以便在互联网上传输,SHA1在某些情况下被打败了-这个”漏洞“不适用于密码哈希,这对安全部门来说无关紧要)。因此,他们要求我们修改密码哈希机制以使用SHA2。
目前,.Net框架没有使用SHA2 (或SHA256等)的等效的Rfc2898DeriveBytes。内部。我知道我可以使用反射来获取这个类的源代码并修改它,但是我一直被告知,加密的第一条规则是“不要自己成长”。
这主要是我的客户的政治需求,而不是技术需求,在通过SHA2运行密码之前通过Rfc2898DeriveBytes运行密码可以很容易地满足这一需求。然而,我对密码学还不太了解,不知道这是否不好--实际上可能会导致一个客观上不太安全的密码哈希。
有人知道有一个Rfc2898DeriveBytes等价类使用SHA2吗?或者,有人知道在SHA2之前通过Rfc2898DeriveBytes哈希运行密码是否是完全安全的吗?
发布于 2014-10-10 02:34:27
从"SecurityDriven.NET“书中下载免费代码示例。查找PBKDF2类,该类接受工厂。可用的工厂包括SHA2 (256,384,512)。
在SHA2散列之前通过Rfc2898DeriveBytes运行密码并不是正确的做法,即使这不太可能是您所做的任何操作中最薄弱的部分(您将丢失密码熵)。
https://stackoverflow.com/questions/16048882
复制相似问题