Best Encryption technique
我正在使用PHP。我想要一个安全快速的密码加密系统。将密码散列一百万次可能更安全,但也更慢。如何在速度和安全之间取得良好的平衡?我想知道PHP中最好的加密方法以及如何应用它。
- 对密码进行100万次散列既慢又不安全,这比简单地对密码进行一次散列还要差。
- @Markbaker好吧,实际上一个缓慢的哈希过程对密码很好,但是MD5或任何sha*算法都不行…
- MD5无法解密。对于存储密码,可以。不是吗?
- @我没有,因为彩虹表非常容易为MD5创建…哈希算法永远无法解密,但这并不意味着它非常适合哈希密码…
- 哇,这么多糟糕的答案,人们说MD5不好,没有提供解释原因的资源。加密不是散列。如果你加密了什么,你就可以解密它。也就是说,你可以得到原文。散列的要点是没人知道原始文本是什么。每一个哈希算法都容易受到彩虹表攻击,这对于某些算法来说是不可行的,因为不存在足够的计算能力。此外,较慢的哈希算法=良好。如果对你来说很慢,对攻击者来说也很慢。这就是你想要的。
- @用户2386164-慢是好的,同意;但反复散列不会降低熵(deadliestwebattacks.com/category/crypto)
- 双重散列密码比只散列一次密码安全吗?
- 来自维基百科的资料来源:en.wikipedia.org/wiki/md5冲突漏洞:—"2005年,研究人员能够用相同的哈希创建成对的PostScript文档[24]和X.509证书[25]。那年晚些时候,MD5的设计师RonRivest写道:"MD5和SHA1都明显断裂(在抗碰撞方面)。"
- 另请参见OpenWall的PHP密码哈希框架(phpass)。它是可移植的,并且能够抵御许多常见的用户密码攻击。编写框架的人(solardesigner)和编写开膛手约翰(john the ripper)并在密码散列比赛中担任法官的人是同一个人。所以他对密码攻击有一两点了解。
我建议使用新的php 5.5密码API。它提供了一种安全的方法来散列密码,同时速度足够快。
如果没有可用的php 5.5,有一个polyfill可以与php5.3.7+一起使用:https://github.com/ircmaxell/password_compat
使用phpass,它是一个非常好的哈希框架,非常容易使用!
- pronounced"pH pass"suuuuuure…
使用sha512 http://php.net/manual/en/function.hash.php。Sha512没有开裂。我建议使用salt:散列前附加到密码的一些随机字符串。这可以防止预先计算的彩虹表,但如果攻击者获得对包含密码和盐的数据库的访问权,则无法防止字典攻击。sha512(密码+salt)->哈希在数据库中存储哈希和盐在检查密码时,检索用户对应的salt,将其与密码连接,散列并与存储的散列进行比较。在这里读:要多长时间才能强制一个咸的sha-512哈希?(盐提供)
回想一下你的问题,尤其是你的陈述"将密码散列一百万次可能更安全,但也更慢。如何在速度和安全之间取得良好的平衡"。事实上,反复散列将保护您免受字典攻击,使计算字典中的所有散列值的成本过高。我在这里什么都不教你。从我给你的第一个链接开始,计算一个sha512散列大约需要46毫秒,这个散列比较长。在军备竞赛中,我可以想到以下因素可能会影响你的决定:-提高计算能力(更多的CPU核心和GPU计算)-随着时间推移改进的算法-攻击者可获得的金额-如果你的网站被破解的话,你能从中获得的价值(如果很低,那就不值得你这么努力了)反对-您可以使用的CPU电量根据经验,我会尽可能多地散列,以免影响我的网站性能。考虑到每秒的登录次数,您可以大致计算出可以在不影响站点性能的情况下花费的CPU功率。
最后一条评论是:假设黑客已经可以访问包含用户名和哈希密码的表,那么您可能会更加担心他们在您的站点上所做的一切坏事。
- 为什么不是SHA512浴缸?
- 是的,事实上,你可以使用任何强大的散列算法。
- 是的。所以你为什么建议如果有一个特定的算法是在"慢,大和安全的?为什么需要SHA512和一些其他的吗?如果你是一个指定的,那么它背后的原因是什么?个人的偏好,它真的很好,在网络环境。是的,有是一个伟大的SHA512,但类似的酮。为什么你的答案1算法的极限?
- 解决方案A I,但没有提出索赔,它是唯一的解决方案。当你指定一本后,立即承认,你的确是对的。现在,我真的没有隐藏的议程或任何个人利益,偏好和SHA512算法提出过任何其他。最我能做你的调查是被承认的那一intellectually由被忽视到替代。我想这个网站的目的是帮助彼此,甚至当我们犯错,但不scrutinize人民和可修复缺损,尤其是当他们有对他们的诚实的错误。
- 我需要英语扬声器可能脱落,为我粗鲁的评论,这不是我的意图。我真的以为你有什么偏好或类似的,当一个人选择算法。
- 在回答你的问题:没有偏好,也许是众所周知的关键算法。但真的,没有有效的技术原因,研究过其他类似SHA512算法等效强度。
你不寻找加密-你寻找散列。
我建议Openwalls phpass http://www.openwall.com/phpass/
如果您使用的是php5.5,那么它们有一个带有密码的apihttp://uk3.php.net/密码
更多信息。
MD5(无盐)已经使用了一段时间,周围有大量的查找列表,加上现代硬件每秒获得700K以上的密码,它根本不需要很长时间就可以"反转"密码。
有了盐,它们更安全,但仍然可以很快地破碎。
- 请解释为什么应该避免使用。
- 方法选择在一个phpass地穴或哈希。
- hashpassword美元(密码)到IT和checkpassword散列(哈希密码美元美元)来检查它
- 你可能会找到一个不需要的反密码(密码,这将导致碰撞同一个MD5哈希。
- "反向"I均值字典攻击,试图发现许多输入输出。