我正在使用Laravel's Hashing功能将加密密码存储在表格中。
我知道我可以使用Hash::check
函数检查普通密码是否与加密密码匹配,但有没有办法从数据库中检索具有给定密码的所有用户,而不实际获取所有用户然后使用Hash::check
函数比较每个人的密码?
修改:
用例是我想知道有多少用户使用给定的密码。
答案 0 :(得分:7)
不是没有提取所有用户并单独检查每个用户。 Laravel的密码哈希使用bcrypt
(PHP的本地password_hash
/ password_verify
也是如此),这是专门设计的,以使这种事情很难做到(对于security / protection) - 它每次都使用不同的盐,所以即使密码相同,也没有两个哈希值相同。
答案 1 :(得分:1)
我不知道Laravel的哈希是否有这样的功能,但似乎不太可能,因为根据定义,哈希与普通密码没有1-1关系。
我的意思是,多个密码可以具有相同的散列,如果Laravel Hashing使用salt(可能是因为它是一种基本的安全模式),相同的密码甚至不会为所有用户提供相同的散列。
它不太可能具有这样的功能,但是如果有这样的功能,你可以确定,在它的引擎盖下,它将完全与你所说的相同:循环用户并使用Hash :: check on each。因为哈希是有意设计的,因为这是唯一的方法。