ОК, в первую очередь. Не пишите свою собственную функцию для хеширования пароля. Я не сомневаюсь в ваших навыках, но для безопасности не используйте собственную систему хеширования. И HMAC с вашим ключом в порядке, но я все равно не буду его использовать.
Наконец, я бы посоветовал вам сделать это для паролей ваших пользователей.
<?PHP
$password=$user['password'];
$username=$user['username'];
$salt='usesomesillystringforsalt';
$hashed_password=crypt($password.$username,'$2a$04$usesomesillstringforsalt$');
?>
В этом алгоритме используется Bcrypt, основанный на Blowfish. Это очень надежный алгоритм, к которому обратились носители Gawker после того, как они были взломаны благодаря надежности и полезности для хеширования паролей. crypt
Руководство по PHP
Далее, не забудьте заменить часть с надписью usesomesillystringforsalt
на что-то другое. Это должно быть 22 цифры соли base64 A-Z, a-z, 0-9 и / и "."
Перейдите по этой ссылке, чтобы узнать больше о самом алгоритме. Я предлагаю вам просто использовать эту реализацию, поскольку она намного сильнее той, которую вы предлагали.
Если вы хотите сделать шаг вперед, я бы посоветовал вам использовать уникальную соль для каждого пользователя. Если вы хотите это сделать, я могу написать пример функции, которая покажет вам, как это сделать.
Как уже говорилось, если у вас есть еще вопросы, не стесняйтесь спрашивать.