如何解决可以将密码作为 pbkdf2 哈希存储在数据库中吗?
我需要在数据库中存储密码。我在 Windows 上,该平台给出的唯一算法是 pbkdf2(据我所知)。那么可以将我的密码存储为 pbkdf2 的哈希值吗?或者他们是否可以通过 Windows API 获得更好的算法(密码学 API 或 Windows 上可用的类似 api?)。我还了解到 PBKDF2+SHA512 与 BCrypt 没有太大区别
解决方法
PBKDF2 确实是一个密码哈希,因此专为这种操作而设计。这并不意味着它没有任何缺点。像往常一样,它有一个盐度和工作因子(一个比 PBKDF2 使用的迭代次数更通用的术语)。
但是它不提供任何内存硬度,因此更容易创建专门的硬件来攻击它。此外,智能实现可以通过执行预计算来加速用于指定哈希函数的 HMAC 算法。最后,如果您询问的位比散列函数的输出多,那么效率会非常低 - 但如果您只是将其用作密码散列而不是(多)密钥派生,那这并不是真正的主题。
所以 PBKDF2 很旧,但它仍然比没有盐和/或工作因素的 hash(pasword)
或 hash(salt | password)
计划的愚蠢数量好一百万倍。从字面上看,因为您至少会使用 1000000 作为迭代计数。
请注意,使用密码散列仍然允许使用弱密码;您应该始终在可能的情况下添加其他措施,例如密码猜测限制、密码强度指标等等。主要用于保护您的用户密码以防登录数据库被盗。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。