2016-05-31 2 views
1

Laravel's Hashing 기능을 사용하여 암호화 된 암호를 테이블에 저장하고 있습니다.특정 암호가있는 모든 사용자를 검색하는 방법이 있습니까

일반 암호가 암호화 된 암호와 일치하는지 확인하려면 Hash::check 함수를 사용할 수 있다는 것을 알고 있지만 실제로 모든 사용자를 얻지 않고 각각의 암호를 비교하지 않고 주어진 암호가있는 데이터베이스에서 모든 사용자를 검색하는 방법이 있습니다. 암호는 Hash::check 기능을 사용하고 있습니까?

편집는 :

유스 케이스는 내가 주어진 암호를 사용하여 얼마나 많은 사용자가 알고 싶은 것입니다.

+0

나는 그것이 있는지 모르지만, 나는 그렇게 희망하지 않는다. 원인이 될 수있는 문제는 미친 짓이다. – Epodax

+3

먼저, 왜 그렇게하고 싶습니까? 둘째, 할 수 없습니다. 각 암호는 고유 한 소금을 가지고 있으며 1 백만 명의 사용자가 ** 123456 **의 암호를 가지고 있더라도 동일한 암호 해시를 얻지는 않습니다. – TheFallen

+0

@ TheFallen 유스 케이스에 대한 자세한 내용으로 질문을 업데이트했습니다. – Sudar

답변

7

모든 사용자를 가져 와서 개별적으로 확인하지 않아도됩니다. Laravel의 암호 해싱은 bcrypt (PHP의 기본 언어 인 password_hash/password_verify)을 사용합니다.이 종류의 작업을 어렵게 만들도록 특별히 설계되었습니다 (security/protection) - 매번 다른 소금을 사용하므로 두 개의 해시가 같지 않더라도 암호는 동일합니다.

1

Laravel의 해싱에는 이러한 기능이 있는지 모르겠지만 해시가 일반 암호와 1-1 관계가 없으므로 가능성이 희박합니다.

여러 개의 암호가 동일한 해시를 가질 수 있으며 Laravel Hashing이 기본 보안 패턴으로 염분을 사용하는 경우 동일한 암호가 모든 사용자에게 동일한 해시를 가지고 있지 않습니다.

그런 기능은있을 것 같지 않지만 그럴 경우 후드에서 정확히 말한대로 할 수 있습니다. 사용자를 반복하고 각각에 대해 해시 :: 체크를 사용하십시오 . 해싱은 그렇게하기위한 유일한 방법이기 때문에 의도적으로 설계 되었기 때문에.

관련 문제