Jetzt haben wir das Problem der technisch korrekten Sprache, und des landläufigen Sprachgebrauchs derer, die den technischen Unterschied nicht kennen.
Das sehe ich auch. Um ein wenig Theorie wird man nicht herumkommen:
1.)
"Vorbetrachtungen/Begriffsdefinitionen: "Hash" / "hashen"
An manchen Stellen kann man nachlesen, Passwörter würden "verschlüsselt" gespeichert. Das ist aber nicht richtig, weil eine "Verschlüsselung" stets umkehrbar ist. Das würde aber bedeuten, dass ein Angreifer der sich in den Besitz der Daten und des Programms bringen kann, ebenso wie das Programm alle Passwörter entschlüsseln könnte. Die Passwörter werden deshalb einem Verfahren unterzogen, welches man "hashen" nennt. Was dabei entsteht ist ein "Hash". Aus diesem kann man das ursprüngliche Passwort nicht mehr "entschlüsseln". Moderne Verfahren führen dieses "hashen" mehrfach durch (man spricht bei der Anzahl von "Runden") und fügen außerdem noch einen "Salt" hinzu. Das ist eine bestimmte Anzahl zufällig gewählter Zeichen."
2.)
"password_verfify() benötigt zwei Parameter: Zum einen das bei der Anmeldung eingegebene Klartextpasswort und zum anderen den Hash des Passwortes, welcher übrigens Informationen zum intern verwendeten Hash-Verfahren, die Anzahl der "Runden" und den "Salt" enthält. Im Wesentlichen wird das Klartextpasswort mit dem gleichen Verfahren, der gleichen Anzahl von "Runden" und dem gleichen "Salt" erneut gehascht. Stimmt das Ergebnis überein, dann stimmt das Klartextpasswort mit dem überein, dessen hash gespeichert wurde. Die Funktion password_verfify() gibt dann true zurück. password_verfify() funktioniert auch dann, wenn der Hash mit einem veralteten Verfahren erzeugt wurde, also insbesondere nach einem Update."
3.)
"password_needs_rehash() benötigt den gespeicherten Hash und prüft ob das übergebene Passwort mit dem modernsten Verfahren gehasht wurde. Es gibt true zurück, wenn dieses nicht der Fall ist. In dem Fall sollte man nach dem erfolgreichem Login das Klartextpasswort mit password_hash() neu hashen und dann den alten, potentiell unsicheren Hash überschreiben. password_needs_rehash() muss nur wenige Zeichen aus dem Hash mit einer internen Liste vergleichen, braucht kaum Speicher und ist deshalb sehr schnell. Es lohnt sich deshalb diese Prüfung bei bzw. nach jeder Anmeldung vorzunehmen."