rfc2898在c#中的Sha2派生字节
本文关键字:派生 字节 Sha2 中的 rfc2898 | 更新日期: 2023-09-27 18:09:46
我有一个基于Rfc2898DeriveBytes的密码哈希机制(基于这里详细的代码:http://crackstation.net/hashing-security.htm)。在内部,这个类利用SHA1——CrackStation链接确实表明SHA1是"旧的",但也指出,尽管Rfc2898DeriveBytes在内部使用它,Rfc2898DeriveBytes仍然是一个很好的机制。
我的一个客户的安全部门听说"SHA1已经被攻破"(具体来说,为了在互联网上传输的文件签名,SHA1已经被攻破,在某些情况下——这个"漏洞"不适用于密码哈希的事实对安全部门来说是无关紧要的)。因此,他们要求我们修改密码哈希机制,采用SHA2。
目前,. net框架没有类似于内部使用SHA2(或SHA256等)的Rfc2898DeriveBytes。我知道我可以使用反射来获取该类的源代码并对其进行更改,但我总是被告知加密的第一条规则是"不要自己增长"。
这主要是我的客户的政治需求,而不是技术需求,在通过Rfc2898DeriveBytes运行密码之前,通过SHA2哈希运行密码可以很容易地满足这个需求。但是,我对密码学没有足够的了解,无法知道这是否可能是坏事——实际上可能导致客观上不那么安全的密码散列。
有人知道Rfc2898DeriveBytes等效类使用SHA2吗?或者,有没有人知道在Rfc2898DeriveBytes之前通过SHA2哈希运行密码是否完全安全?
从"SecurityDriven "下载免费代码示例。网"的书。找到接受HMAC工厂的PBKDF2类。用户可用的工厂包括 SHA2 ( 256 , 384 , 512 )。
在Rfc2898DeriveBytes
之前通过SHA2哈希运行密码是不是正确的事情,即使这不太可能是您正在做的任何事情中最弱的部分(您将失去密码熵)。