我最近已经知道使用SHA256为密码生成密码哈希。在阅读了一些关于腌制密码和安全性之后,我在.NET中看到了rfc2898derivebytes
和passwordderivebytes
类。使用rfc2898derivebytes
类比通常的哈希方法有什么优势(生成盐,生成盐渍密码,存储在db中)?Rfc2898DeriveBytes与Sha2哈希密码生成
3
A
回答
4
标准散列,如SHA256,可以在现代硬件上快速生成。
这通常被认为是一件好事,但有一个缺点:试图破解密码的坏人也可以非常快速地生成这些哈希,这意味着他们可以使用蛮力相对容易地发现您的密码。
密钥导出算法,如bcrypt和PBKDF2(又名Rfc2898DeriveBytes
)是多慢比标准散列算法。他们在内部使用标准的散列算法 - 在Rfc2898DeriveBytes
的情况下使用SHA1 - 但是它们迭代数千次以生成派生密钥。
所以,尽管你的机器需要做更多的工作来使用迭代密钥派生算法来生成“散列”,但试图破解密码的坏人也需要做更多的工作。这是一件好事。
Rfc2898DeriveBytes
类允许你specify the number of iterations to use(我认为默认值是1,000)。您使用的迭代次数越多,攻击者就越难以使用暴力破解密码。
相关问题
- 1. 哈希表密钥生成
- 2. 未生成密钥哈希
- 3. 密码哈希通过Rfc2898DeriveBytes - 什么传递给getBytes
- 4. 可以将bcrypt哈希密码转换为SHA2吗?
- 5. 与哈希存储密码
- 6. 密码哈希:Keccak与否
- 7. ActiveDirectoryMembershipProvider.ValidateUser与哈希密码
- 8. CakePHP哈希密码
- 9. Windows哈希密码
- 10. Sql - 批量加密哈希生成
- 11. Android密钥哈希无法生成
- 12. 如何为Facebook生成密钥哈希?
- 13. 加密哈希密码?
- 14. 是否可以验证密码哈希与另一个密码哈希?
- 15. Rfc2898DeriveBytes - 密码长度
- 16. 生成MD5哈希
- 17. 四郎与JDBC和哈希密码
- 18. 登录与哈希密码PHP
- 19. 验证由python passlib生成的密码哈希
- 20. 如何存储从erlang生成的哈希密码
- 21. 如何使用sql server生成类似的哈希密码?
- 22. 在java中生成类似openssl passwd的密码哈希值-1
- 23. 播放1.2.4 + CRUD模块:生成哈希密码
- 24. 通过MySQL生成密码的pbkdf2_sha256哈希
- 25. 如何生成一个随机盐的哈希密码
- 26. 使用PHPass生成相同的密码哈希值
- 27. 在C中生成Unix风格的MD5密码哈希#
- 28. ASP.NET的密码哈希和密码盐
- 29. 最快的哈希码生成器.NET
- 30. 生成对象的哈希代码
谢谢。清除问题。还有一件事,这只意味着PBKDF2世代在生成期间(用户帐户创建)只是缓慢的,还是我会用它来验证用户登录? – Bahamut
在创建*和*登录过程中会很慢(因为您需要从输入的密码重新生成密钥,然后再将其与存储的密钥进行比较)。使用像PBKDF2这样的迭代算法需要权衡;尝试使用您可以支持的最大迭代次数,但只有您可以决定它是什么(由您的计算机负载,用户准备接受的延迟等决定)。 – LukeH
我说得没错,从你的解释中得出的结论如下:PBKDF2比单纯的SHA256更好,因为它可以进行数千次操作?在我的计算机上,SHA256的计算速度大约快5倍,所以如果我计算的话,比如500K的SHA256而不是100K的PBKDF2,它的安全性会是相同的吗?谢谢! – Mar