Вы на правильном пути, но позвольте мне помочь вам улучшить вашу систему.
Создайте сильный случайный ключ и сохраните его в файле над корнем документа:
/home/username/key
/home/username/public_html/login.php
Файл должен содержать (псевдо) случайные двоичные данные с максимально возможной силой. 512 бит случайных данных должны быть в порядке.
Затем сгенерируйте уникальную соль для каждого пользователя в вашей системе. Эта соль не должна быть сильнее 16-битных случайных двоичных данных.
Наконец, хэши паролей должны выглядеть примерно так:
hash('sha256', $password . $salt . $key);
где алгоритм хеширования имеет большое значение. Не используйте MD5 или SHA-1. Используйте семейство SHA-2, обычно SHA-256 или SHA-512. Кроме того, Whirlpool - хороший выбор.
Если вы хотите еще больше улучшить свою систему, вы можете многократно хешировать снова и снова, например:
public static function hash($algorithm, $data, $iterations = 1, $rawOutput = false)
{
if ($iterations < 1)
throw new Exception('There must be at least one iteration.');
while ($iterations--)
{
$data = hash($algorithm, $data, true);
}
return ($rawOutput ? (binary) $data : bin2hex($data));
}