Ved registrering opretter du et unikt salt. Det salt er nu en del af hashen. Hvis du ser godt efter, vil du se, at den er indlejret i den første del af hashen. For at kontrollere adgangskoden skal du bruge den tidligere hash-kodede adgangskodes salt, så du bruger det samme salt igen.
$correctPasswordHash = getPasswordFromDatabase($_POST['username']);
$hash = crypt($_POST['password'], $correctPasswordHash);
if ($correctPasswordHash === $hash) ...
For at gøre dette nemmere og mere idiotsikkert, brug password_compat-biblioteket
, som pakker dette ind i en brugervenlig API, som også vil blive integreret i en fremtidig version af PHP. Undersøg dens kildekode for korrekt brug af crypt
, da der er nogle faldgruber, du skal passe på. Password_compat-biblioteket bruger også en tilpasset binær sammenligning i stedet for en simpel ===
for at forhindre timing af angreb.