Во-первых, вы должны создать случайную пользовательскую соль. Затем вы должны сохранить это и хэш пароля в базе данных.
$salt = md5(unique_id().mt_rand().microtime());
$pass = sha1($salt.$_REQUEST['pass']);
и сохраните $ salt и $ pass в базе данных. Затем, когда они заходят в систему, вы просматриваете их строку и проверяете хеш:
$user = query('SELECT * FROM `user` WHERE username = ?', array($_REQUEST['username']));
if($user)
{
// If the password they give maches
if($user->pass === sha1($user->salt. $_REQUEST['pass']))
{
// login
}
else
{
// bad password
}
}
else
{
// user not found
}
Создание пользовательской соли для каждой учетной записи гарантирует, что радужные таблицы бесполезны, и любой взломщик вашего сервера должен будет взломать каждый пароль.