Система входа в систему Php с солеными хэшами не может снова сопоставиться с базой данных

Моя первая попытка на php, и я работаю с password_compat, так как на сервере работает версия php ‹5.5.

У меня есть набор данных пользователя, которые я автоматически сохраняю в базе данных. У каждого пользователя есть уникальная соль, сгенерированная из $random_salt = mcrypt_create_iv(24, MCRYPT_DEV_URANDOM);, и я пытался сохранить ее в базе данных в виде большого двоичного объекта, и вместе с этим я сохраняю свой хешированный пароль со следующим

$options = array('cost' => 8, 'salt' => $random_salt); 
$password = password_hash($password, PASSWORD_BCRYPT, $options);

Чтобы проверить, я запрашиваю базу данных, получаю совпадение и передаю атрибут соли в переменную $salt и получаю сохраненный хешированный пароль. Наконец, используя следующее

$options = array('cost' => 8, 'salt' => $salt); 
$password = password_hash($password, PASSWORD_BCRYPT, $options);
$intVar = (int) password_verify($password, $db_password);

мои результаты пока только по одному из входов в систему не совпадают.

Где я ошибаюсь? Это тип данных атрибута базы данных для соли? мое использование password_hash?


person Pete    schedule 24.11.2013    source источник


Ответы (1)


Я только что обнаружил, что возврат каретки «\ r» все еще существовал в конце моих паролей, когда они автоматически попадали в базу данных, считывались через файл с разделителями табуляции. Программа была права все время. Мой пароль был неправильным с помощью "\r" .

person Pete    schedule 24.11.2013
comment
Молодец (и голосую) за решение этой проблемы и за публикацию решения. - person crafter; 24.11.2013