Po rejestracji tworzysz unikalną sól. Ta sól jest teraz częścią haszyszu. Jeśli przyjrzysz się uważnie, zobaczysz, że jest on osadzony w pierwszej części skrótu. Aby sprawdzić hasło, użyj soli poprzedniego zaszyfrowanego hasła, aby ponownie użyć tej samej soli.
$correctPasswordHash = getPasswordFromDatabase($_POST['username']);
$hash = crypt($_POST['password'], $correctPasswordHash);
if ($correctPasswordHash === $hash) ...
Aby było to łatwiejsze i bardziej niezawodne, użyj biblioteki password_compat
, który zawiera to w łatwym w użyciu interfejsie API, który zostanie również zintegrowany z przyszłą wersją PHP. Sprawdź jego kod źródłowy pod kątem prawidłowego użycia crypt
, ponieważ istnieją pewne pułapki, którymi trzeba się zająć. Biblioteka password_compat używa również niestandardowego porównania binarnego zamiast prostego ===
aby udaremnić ataki czasowe.