2016-05-31 2 views
1

Я использую функцию Laravel's Hashing для хранения зашифрованных паролей в таблице.Есть ли способ получить всех пользователей с определенным паролем

Я знаю, что могу использовать функцию Hash::check, чтобы проверить, соответствует ли простой пароль зашифрованному паролю. Но есть ли способ получить всех пользователей из базы данных с заданным паролем, фактически не получая всех пользователей, а затем сравнивая каждый из них пароль, используя функцию Hash::check?

Edit:

UseCase в том, что я хочу знать, сколько пользователей использовать данный пароль.

+0

Я не знаю, есть ли, но я, конечно же, не надеюсь, что проблемы, которые могут возникнуть, будут безумием. – Epodax

+3

Во-первых, почему вы хотите это сделать? Во-вторых, это невозможно. Каждый пароль имеет уникальную соль, и даже если у 1 миллиона пользователей есть пароль ** 123456 **, вы не получите такой же хэш пароля. – TheFallen

+0

@ TheFallen Я обновил вопрос с более подробной информацией о usecase. – Sudar

ответ

7

Не забирайте всех пользователей и проверяйте их индивидуально. Использование пароля Laravel использует bcrypt (как и родной язык PHP /password_verify), который специально спроектирован таким образом, что это трудно сделать (для security/protection) - каждый раз он использует различную соль, поэтому два хэша одинаковы, даже если пароли идентичны.

1

Я не знаю, есть ли такая функция в хэшировании Laravel, но кажется маловероятной, потому что хеши по определению не имеют отношения 1-1 с простым паролем.

Я имею в виду, что несколько паролей могут иметь один и тот же хеш, и если это Laravel Hashing использует соль (это, скорее всего, потому, что это базовый шаблон безопасности), тот же пароль даже не имеет одинакового хэша для всех пользователей.

Это вряд ли будет иметь такую ​​функциональность, но в случае, если оно есть, вы можете быть уверены, что под капотами оно будет делать то же самое, что вы сказали: зацикливайте пользователей и используйте Hash :: check на каждом из них , Потому что хеширование намеренно спроектировано таким образом, что это единственный способ сделать это.