【问题标题】:Is there a way to retrieve all users that have a particular password有没有办法检索所有具有特定密码的用户
【发布时间】:2016-09-29 12:06:53
【问题描述】:

我正在使用Laravel's Hashing 功能将加密密码存储在表中。

我知道我可以使用Hash::check 函数来检查普通密码是否与加密密码匹配,但是有没有办法从数据库中检索具有给定密码的所有用户,而无需实际获取所有用户然后比较每个用户使用Hash::check函数的密码?

编辑

用例是我想知道有多少用户使用给定的密码。

【问题讨论】:

  • 我不知道是否存在,但我当然不希望如此,可能导致的问题会很疯狂。
  • 首先,您为什么要这样做?第二,做不到。每个密码都有一个唯一的盐,即使 100 万用户的密码为 123456,您也不会得到相同的密码哈希。
  • @TheFallen 我更新了这个问题,提供了有关用例的更多详细信息。
  • @Sudar 最好确保您的用户不会发现,因为我向您保证,他们不会喜欢您正在检查他们的密码这一事实。
  • @Epodax 好吧,当您不检查密码时,他们也会生气。 :-p techcrunch.com/2011/06/20/…

标签: php laravel hash


【解决方案1】:

必须获取所有用户并单独检查每个用户。 Laravel 的密码散列使用 bcrypt (就像 PHP 的原生 password_hash / password_verify 一样),这是专门为使这种事情难以做到的(对于 security / protection) - 它每次都使用不同的盐,所以没有即使密码相同,两个哈希值也相同。

【讨论】:

    【解决方案2】:

    我不知道 Laravel 的散列中是否有这样的功能,但似乎不太可能,因为根据定义,散列与普通密码没有 1-1 关系。

    我的意思是,多个密码可以有相同的哈希,如果 Laravel 哈希使用盐(这很可能是因为这是一种基本的安全模式),相同的密码甚至不会对所有用户有相同的哈希。

    它不太可能有这样的功能,但如果有,你可以肯定,在幕后,它会做你所说的完全相同的事情:循环用户并使用 Hash::check 对每个用户进行检查。因为哈希是故意设计的,这是唯一的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 2014-03-28
      • 1970-01-01
      • 2015-10-06
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多