При регистрация създавате уникална сол. Тази сол вече е част от хаша. Ако се вгледате внимателно, ще видите, че е вграден в първата част на хеша. За да проверите паролата, използвайте солта на предишната хеширана парола, така че отново използвате същата сол.
$correctPasswordHash = getPasswordFromDatabase($_POST['username']);
$hash = crypt($_POST['password'], $correctPasswordHash);
if ($correctPasswordHash === $hash) ...
За да направите това по-лесно и по-безопасно, използвайте библиотеката password_compat
, който обгръща това в лесен за използване API, който също ще бъде интегриран в бъдеща версия на PHP. Проверете неговия изходен код за правилното използване на crypt
, тъй като има някои подводни камъни, за които трябва да се погрижите. Библиотеката password_compat също използва персонализирано двоично сравнение вместо просто ===
за да осуетите атаките за определяне на времето.