2016-05-31 77 views
1

我正在使用Laravel's Hashing功能将加密密码存储在表中。有没有办法检索具有特定密码的所有用户

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

编辑

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

+0

我不知道是否有,但我当然不希望如此,可能会导致的问题将是疯了。 – Epodax

+3

首先,你为什么要这么做?其次,这是无法完成的。每个密码都有一个独特的盐,即使有一百万用户的密码是** 123456 **,你也不会得到相同的密码哈希值。 – TheFallen

+0

@TheFallen我已经更新了有关该用例的更多详细信息。 – Sudar

回答

7

不是不提取所有用户并单独检查每个用户。 Laravel的密码散列使用bcrypt(与PHP的本地password_hash/password_verify一样),它专门设计用于使这类事情难以做到(对于security/protection) - 它每次都使用不同的盐,因此即使密码是相同的。

1

我不知道在Laravel的哈希中是否有这样的函数,但似乎不太可能,因为根据定义,哈希与纯密码没有1-1关系。

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

它不太可能有这样的功能,但如果它有,你可以肯定的是,在引擎盖下,它将完成与你所说的完全相同的操作:循环用户并对每一个使用Hash :: check 。因为哈希是有意设计的,所以这是唯一的方法。

相关问题