2016-05-31 3 views
1

Ich verwende Laravel's Hashing Funktionalität zum Speichern verschlüsselter Kennwörter in der Tabelle.Gibt es eine Möglichkeit, alle Benutzer abzurufen, die ein bestimmtes Kennwort haben

Ich weiß, dass ich Hash::check Funktion verwenden kann, um zu überprüfen, ob ein einfaches Passwort mit dem verschlüsselten Passwort übereinstimmt. Aber gibt es eine Möglichkeit, alle Benutzer aus der Datenbank, die ein bestimmtes Passwort haben, ohne tatsächlich alle Benutzer zu erhalten und dann zu vergleichen Passwort mit der Hash::check Funktion?

bearbeiten:

Die usecase ist, dass ich wissen will, wie viele Benutzer ein übergebenes Passwort verwenden.

+0

Ich weiß nicht, ob es gibt, aber ich hoffe nicht, die Probleme, die verursachen könnten, wäre verrückt. – Epodax

+3

Erstens, warum möchten Sie das tun? Zweitens kann es nicht getan werden. Jedes Passwort hat einen eindeutigen Wert und selbst wenn 1 Million Benutzer das Passwort ** 123456 ** haben, erhalten Sie nicht den gleichen Passwort-Hash. – TheFallen

+0

@TheFallen Ich habe die Frage mit weiteren Details zum Usecase aktualisiert. – Sudar

Antwort

7

Nicht ohne alle Benutzer zu holen und jeden einzeln zu überprüfen. Laravels Passwort-Hashing verwendet bcrypt (wie auch die PHP-Version password_hash/password_verify), die speziell entwickelt wurde, um diese Art von Sache schwierig zu machen (für security/protection) - es verwendet ein anderes Salz jedes Mal, so dass keine zwei Hashes sind gleich, auch wenn Passwörter sind identisch.

1

Ich weiß nicht, ob es eine solche Funktion in Laravels Hashing gibt, aber es scheint unwahrscheinlich, weil Hashes per Definition keine 1-1-Beziehung mit dem Plain-Passwort haben.

Ich meine, mehrere Passwörter können den gleichen Hash haben, und wenn es Laravel Hashing verwendet Salz (was wahrscheinlich ist, weil ein grundlegendes Sicherheitsmuster ist), das gleiche Passwort hat nicht einmal den gleichen Hash für alle Benutzer.

Es ist unwahrscheinlich, dass eine solche Funktionalität vorhanden ist, aber falls dies der Fall ist, können Sie sicher sein, dass Sie unter den Hauben genau dasselbe tun, was Sie gesagt haben: Schleifen Sie die Benutzer und verwenden Sie Hash :: auf jedem . Weil Hashing absichtlich entworfen wird, ist das der einzige Weg, dies zu tun.