безопасный пароль в php используя hash_hmac - PullRequest
1 голос
/ 29 августа 2011

Я только что получил одну функцию с этого сайта, которая описывает, как создать безопасный пароль с помощью хеша.ниже функция

function hash_password($password, $nonce) {
  global $site_key;
  return hash_hmac('sha512', $password . $nonce, $site_key);
}

Я использую эту функцию, как

$salt = sha1(rand()); 
$salt = substr($salt, 0, 4); 
$site_key="site.com";
$pass=hash_password($pass,$salt);

, она генерирует случайный текст каждый раз.но я не могу проверить этот пароль в базе данных, так как в базе данных хранится пароль, и каждый раз генерируется случайный текст.

Я хочу знать, как я могу использовать эту функцию для

  1. Сохранение пароля в базе данных во время создания пользователя
  2. Проверка пароля из базы данных при входе в систему

или

Есть ли другой безопасный способ?

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 августа 2011

Вам необходимо сохранить случайную строку ($nonce, я полагаю) в вашей базе данных как часть данных вместе с полученным хешем. В противном случае вам просто не хватит информации для подтверждения пароля.

0 голосов
/ 29 августа 2011

Сохраните случайно сгенерированную строку вместе с паролем в строке пользователя на БД или жестко закодируйте соль и всегда используйте одну и ту же соль вместо того, чтобы менять ее каждый разЕсли вы генерируете новую соль, то хеш будет меняться каждый раз, когда вы ее вычисляете (и поскольку это случайное значение, вы не можете получить его обратно ...).Кстати, а почему не простой MD5?
</p> <pre><code>$pass = md5( $pass.$site_key );

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...