我正在使用PHP。我想要一个安全快速的密码加密系统。散列密码一百万次可能更安全,但速度也更慢。如何在速度和安全之间取得良好的平衡? 我想知道在PHP中最好的加密方法,以及如何应用它。最佳加密技术
最佳加密技术
回答
我推荐使用新的PHP 5.5 password API。它提供了一种安全的方法来散列密码,而且速度足够快。
如果您没有PHP 5.5提供有一个polyfill与PHP 5.3.7+工作:https://github.com/ircmaxell/password_compat
你不找加密 - 你想找的散列。
我建议openwalls phpass http://www.openwall.com/phpass/
如果您正在使用PHP5.5他们有一个密码hasing API http://uk3.php.net/password
获取更多信息。
MD5(无盐)已经被使用了一段时间,大量的查找列表已经被使用了,与现代硬件每秒获得700K +密码相结合,不需要很长时间就可以“反转”密码。
用盐他们更安全,但还是可以很快被破解
解释为什么一个人应该避免MD5。 –
哪个方法我更喜欢phpass crypt或hash。 –
HashPassword($ password)对它进行散列和CheckPassword($ password,$ hash)来检查它 – exussum
使用SHA512 http://php.net/manual/en/function.hash.php。 SHA512未被破解。我建议使用salt:一些随机字符串,您可以在散列前追加密码。这可以防止预先计算的彩虹表,但是如果攻击者获得对含有密码和盐分的数据库的访问权限,则不能防止字典攻击。 SHA512(密码+盐) - >散列 在数据库中存储散列和盐 当检查密码时,检索与用户对应的salt,将其与密码连接起来,对其进行散列并与存储的散列进行比较。 这里阅读:How long to brute force a salted SHA-512 hash? (salt provided)
遥想关于你的问题,特别是关于你的声明“哈希密码万次可能更安全,也更慢如何实现速度和安全性之间的良好平衡。”实际上,反复哈希将通过使字典计算所有哈希值来计算成本过高而保护您免受字典式攻击。我在这里没有教你任何东西。从我给你的第一个链接开始,计算一个相对较长的SHA512散列花费了大约46毫秒。无论如何,我可以考虑以下因素,可能会影响您的决定,因为您处于军备竞赛环境: - 提高计算能力(更多CPU核心和GPU计算) - 随着时间推移改进的算法 - 可用金额攻击者 - 如果破解出网站的价值(如果较低,则不值得费) 针对 - 您可以随意使用的CPU功率量 作为一条经验法则,我会散列为尽可能多次以不影响我的网站性能。考虑到每秒登录次数,您可以大致计算出您可以承担的CPU电量,而不会影响您的网站性能。
最后一条评论:假设黑客已经可以访问包含用户名和散列密码的表,那么您可能在此时更担心他们可以在您的网站上做的所有坏事。
为什么SHA512,而不是漩涡? –
是的,的确,你可以使用任何强大的哈希算法寻找输出。 – Tarik
没错。那么,为什么建议具体的一个,如果有几十速度很慢,大算法和安全性?为什么SHA512,而不是其它的呢?如果您指定的那一个,那么什么是其背后的原因是什么?个人喜好,它在网络环境等真的很好吗?是的,SHA512是伟大的,但也有类似的报告。为什么要限制你的回答1算法? –
- 1. Javascript或jquery加密技术
- 2. SSL密钥交换加密技术
- 3. 为用户保存密码记录的最佳技术?
- 4. 时间线的最佳技术
- 5. 学习新技术的最佳实践
- 6. 用于Windows平台的最佳技术?
- 7. AJAX Web开发的最佳技术
- 8. Jquery-mobile和Phonegap最佳技术
- 9. 最佳网站地图技术和最佳实践
- 10. Botan vs OpenSSL vs Crypto ++加密技术
- 11. 使用ObjectMapper的加密技术
- 12. 目标中的AES加密技术C
- 13. 流星1.4 - 反应数据加载技术最佳实践
- 14. 最佳的技术来添加所选类别列出
- 15. 处理日志数据加载的最佳技术或语言?
- 16. Java Bouncy Castle加密技术 - 使用AES加密
- 17. 最快的同步技术
- 18. java中的最新技术
- 19. 最快的分拣技术
- 20. 使用密钥的简单双向加密技术/算法?
- 21. 如何在使用JS加密技术加密的Java字符串中解密
- 22. Gridview ItemTemplate中的多个Eval字段的最佳技术?
- 23. 最佳和简洁的资源/链接学习SEO技术?
- 24. 最佳技术用于存储大文件
- 25. 基于Java的简单CRUD网站的最佳技术
- 26. 什么是存储多个ID的最佳技术?
- 27. 将用户重定向到移动网站的最佳技术
- 28. 用于在Azure Blob中保存CSV日志的最佳技术
- 29. 最佳技术自顶向下RPG式的网格滚动?
- 30. 用于ipad/iphone和网络直播的最佳技术
散列密码一百万次比简单散列一次速度慢并且不安全 –
@MarkBaker实际上,一个缓慢的散列过程对密码是有好处的,但对md5或任何sha *算法都是好的...... – Bun
MD5是不可能解密。为了存储密码,它会没事的。不是吗? – meorfi