关于php:最佳加密技术

Best Encryption technique

本问题已经有最佳答案,请猛点这里访问。

我正在使用PHP。我想要一个安全快速的密码加密系统。将密码散列一百万次可能更安全,但也更慢。如何在速度和安全之间取得良好的平衡?我想知道PHP中最好的加密方法以及如何应用它。


我建议使用新的php 5.5密码API。它提供了一种安全的方法来散列密码,同时速度足够快。

如果没有可用的php 5.5,有一个polyfill可以与php5.3.7+一起使用:https://github.com/ircmaxell/password_compat


使用phpass,它是一个非常好的哈希框架,非常容易使用!


使用sha512 http://php.net/manual/en/function.hash.php。Sha512没有开裂。我建议使用salt:散列前附加到密码的一些随机字符串。这可以防止预先计算的彩虹表,但如果攻击者获得对包含密码和盐的数据库的访问权,则无法防止字典攻击。sha512(密码+salt)->哈希在数据库中存储哈希和盐在检查密码时,检索用户对应的salt,将其与密码连接,散列并与存储的散列进行比较。在这里读:要多长时间才能强制一个咸的sha-512哈希?(盐提供)

回想一下你的问题,尤其是你的陈述"将密码散列一百万次可能更安全,但也更慢。如何在速度和安全之间取得良好的平衡"。事实上,反复散列将保护您免受字典攻击,使计算字典中的所有散列值的成本过高。我在这里什么都不教你。从我给你的第一个链接开始,计算一个sha512散列大约需要46毫秒,这个散列比较长。在军备竞赛中,我可以想到以下因素可能会影响你的决定:-提高计算能力(更多的CPU核心和GPU计算)-随着时间推移改进的算法-攻击者可获得的金额-如果你的网站被破解的话,你能从中获得的价值(如果很低,那就不值得你这么努力了)反对-您可以使用的CPU电量根据经验,我会尽可能多地散列,以免影响我的网站性能。考虑到每秒的登录次数,您可以大致计算出可以在不影响站点性能的情况下花费的CPU功率。

最后一条评论是:假设黑客已经可以访问包含用户名和哈希密码的表,那么您可能会更加担心他们在您的站点上所做的一切坏事。


你不寻找加密-你寻找散列。

我建议Openwalls phpass http://www.openwall.com/phpass/

如果您使用的是php5.5,那么它们有一个带有密码的apihttp://uk3.php.net/密码

更多信息。

MD5(无盐)已经使用了一段时间,周围有大量的查找列表,加上现代硬件每秒获得700K以上的密码,它根本不需要很长时间就可以"反转"密码。

有了盐,它们更安全,但仍然可以很快地破碎。