Bij registratie maak je een uniek zout aan. Dat zout is nu onderdeel van de hasj. Als je goed kijkt, zie je dat het is ingebed in het eerste deel van de hash. Om het wachtwoord te controleren, gebruikt u de salt van het vorige gehashte wachtwoord, zodat u dezelfde salt opnieuw gebruikt.
$correctPasswordHash = getPasswordFromDatabase($_POST['username']);
$hash = crypt($_POST['password'], $correctPasswordHash);
if ($correctPasswordHash === $hash) ...
Om dit gemakkelijker en onfeilbaarder te maken, gebruikt u de password_compat-bibliotheek
, die dit verpakt in een eenvoudig te gebruiken API, die ook zal worden geïntegreerd in een toekomstige versie van PHP. Inspecteer de broncode voor het juiste gebruik van crypt
, aangezien er enkele valkuilen zijn waar u voor moet zorgen. De bibliotheek met wachtwoord_compat gebruikt ook een aangepaste binaire vergelijking in plaats van een eenvoudige ===
om timingaanvallen te dwarsbomen.