Registrací vytvoříte unikátní sůl. Tato sůl je nyní součástí hashe. Když se podíváte pozorně, uvidíte, že je vnořený do první části hashe. Chcete-li heslo zkontrolovat, použijte sůl předchozího hashovaného hesla, takže znovu používáte stejnou sůl.
$correctPasswordHash = getPasswordFromDatabase($_POST['username']);
$hash = crypt($_POST['password'], $correctPasswordHash);
if ($correctPasswordHash === $hash) ...
Aby to bylo jednodušší a spolehlivější, použijte knihovnu password_compat
, který to zabalí do snadno použitelného API, které bude také integrováno do budoucí verze PHP. Zkontrolujte jeho zdrojový kód pro správné použití crypt
, protože existují určitá úskalí, o která se musíte postarat. Knihovna password_compat také používá vlastní binární srovnání namísto jednoduchého ===
k maření načasovaných útoků.