【问题标题】:Best algorithm for hashing provided by my host我的主机提供的最佳哈希算法
【发布时间】:2023-04-02 19:37:01
【问题描述】:

我正在寻找一种好的单向加密/散列方法,以使用我的主机提供的一种算法来安全存储密码。

这里是主机提供的所有算法的列表:http://www.eresig.tk/hash.php

【问题讨论】:

标签: php security encryption hash password-protection


【解决方案1】:

以上都不是。通用哈希函数的问题在于它们速度很快,这意味着攻击者实际上可以非常快速地暴力破解大量密码,而随着计算机变得更快,前景看起来更暗淡。

请改用bcrypt,它是 PHP 内置的,支持从 5.3.0 开始的所有平台。如果您使用的是旧版本的 PHP,您可以使用 Suhosin patch 设置 bcrypt。

bcrypt 的优点是它有一个工作因子,您可以设置它来减慢散列过程。如果需要多一点时间来检查给定的密码是否有效,您不必过分担心,但是攻击者会花费更长的时间来暴力破解密码。

如果您想更进一步,您可能还想查看scrypt

【讨论】:

  • 但是为什么以上都没有呢?它将“Blowfish”列为第四个元素。
  • @NikiC bcrypt 需要使用crypt(),无论什么原因都不能使用hash()
  • 是的,当然。我只是想说 Blowfish 是列表的一部分,即使不在散列中而是在 crypt 部分中;)
  • 如果我想让它变慢,是否可以多次循环哈希?例如:for ($i=1;$i<1000;$i++) { $hash=hash('sha512', $hash); }
  • @LastCoder 添加唯一盐将使彩虹表无用,但无法阻止对单个密码 + 盐哈希的暴力攻击
【解决方案2】:

在这个狂热的程序员网站上,哈希问题被夸大了。就哈希密码而言,任何算法都足够了。特别是当这个问题与通常的 php 应用程序的其他部分相比时。在普通的 PHP 网站上使用一些强哈希就像在草屋的纸门上使用安全锁。

如果您真的想利用您网站上的某些漏洞来保护用户密码不被盗(而您应该更加关注这样的漏洞),然后在其他网站上对这些用户进行暴力破解,那么您要做的就是真正应该关心的是 密码强度 和盐,而不是散列算法本身。 没有散列技术可以保护像“1234”或“joe”这样的傻通。

所以,md5 + strong password + average saltusual password + super-extra-cool_hash 好,而且足够了。

【讨论】:

  • +1 对于一般正确的帖子,虽然“夸张”的部分有点不受欢迎。是要求人们使用准备好的陈述而不是mysql_query("SELECT * FROM table WHERE id ='{$_POST['id']}')“夸张”吗?我认为不会。
  • “你的网站可能写得不好而且容易受到攻击”不是反对正确保护用户密码的好论据。最重要的是,大多数用户会重复使用密码,而未能尽最大努力保护密码是不负责任的。
【解决方案3】:

SHA-256 对于密码哈希来说绰绰有余,只需确保为每个用户使用不同的 edit salt。 salt 可以是用户的 ID、“创建时间”时间戳、与该用户相关联的 GUID 等……您可以在散列之前将 salt 附加到纯文本密码中。

强制执行某种密码“最佳实践”将有助于避免任何暴力攻击。不允许用户使用弱密码(少于 N 个字符,仅包含 1 个字符集中的字符等...)。

【讨论】:

  • -1 用于 IV。我认为您正在谈论对哈希进行加盐以增加使用彩虹表破解的成本。在散列中,“IV”实际上只是散列函数的输入,我不相信它曾经被称为 IV。
  • 我现在感觉很糟糕,想撤消我的 -1 过于苛刻。 SHA-256 确实是一种很好的散列算法,用于存储密码,只要它们是加盐散列并且盐是充分不可预测的。
  • 术语“初始化向量”通常用于分组密码的上下文中,而“盐”对于您要表达的内容来说是一个更好的词。随便争辩,但实际上可以在一天内破解通过 SHA256 散列的 8 个字符的密码。
  • 为了命名,我将 IV 更改为 Salt。
  • @NullUserException - 所以你是说 8 个(或更少)字符的密码不会成为密码长度“最佳实践”的一部分?我当然不会“争论”……对我来说似乎是个稻草人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-26
  • 2021-09-02
  • 2010-09-20
  • 2019-01-07
  • 1970-01-01
相关资源
最近更新 更多