我最近已经知道使用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. 密码哈希:Keccak与否
- 6. 与哈希存储密码
- 7. ActiveDirectoryMembershipProvider.ValidateUser与哈希密码
- 8. 哈希密码
- 9. 生成UniqueUserID与哈希
- 10. PHP密码哈希()
- 11. Windows哈希密码
- 12. CakePHP哈希密码
- 13. Android密钥哈希无法生成
- 14. Sql - 批量加密哈希生成
- 15. 如何为Facebook生成密钥哈希?
- 16. 加密哈希密码?
- 17. 解密哈希密码
- 18. 是否可以验证密码哈希与另一个密码哈希?
- 19. 生成MD5哈希
- 20. Rfc2898DeriveBytes - 密码长度
- 21. 登录与哈希密码PHP
- 22. 四郎与JDBC和哈希密码
- 23. 与哈希ASP.NET MVC密码验证
- 24. 尔康PHP哈希相同的密码生成多个结果
- 25. 如何存储从erlang生成的哈希密码
- 26. 在java中生成类似openssl passwd的密码哈希值-1
- 27. 在C中生成Unix风格的MD5密码哈希#
- 28. 通过MySQL生成密码的pbkdf2_sha256哈希
- 29. 如何生成一个随机盐的哈希密码
- 30. 播放1.2.4 + CRUD模块:生成哈希密码
谢谢。清除问题。还有一件事,这只意味着PBKDF2世代在生成期间(用户帐户创建)只是缓慢的,还是我会用它来验证用户登录? – Bahamut
在创建*和*登录过程中会很慢(因为您需要从输入的密码重新生成密钥,然后再将其与存储的密钥进行比较)。使用像PBKDF2这样的迭代算法需要权衡;尝试使用您可以支持的最大迭代次数,但只有您可以决定它是什么(由您的计算机负载,用户准备接受的延迟等决定)。 – LukeH
我说得没错,从你的解释中得出的结论如下:PBKDF2比单纯的SHA256更好,因为它可以进行数千次操作?在我的计算机上,SHA256的计算速度大约快5倍,所以如果我计算的话,比如500K的SHA256而不是100K的PBKDF2,它的安全性会是相同的吗?谢谢! – Mar