У меня Moodle 2.7. Хеши пользователей и пароли хранятся в таблице mdl_user. Я хочу создать внешний скрипт, который может проверять — правильно ли введены логин и пароль.
Как я вижу — эта версия Moodle использует некоторые функции PHP password_hash () генерировать хэш пароля.
Моя версия PHP 5.4, поэтому я не могу использовать эту функцию. Так что я использую эту библиотеку https://github.com/ircmaxell/password_compat с этим кодом
$password_hash = password_hash( $password , PASSWORD_DEFAULT, array());
Проблема в том, что хэш-код меняется каждый раз, когда я его вычисляю. Поэтому я не могу сравнить этот хеш со строкой, которая находится в таблице mdl_user.
Если эта функция похожа на password_hash()
родной для PHP, соль генерируется вместе с хешем, и соль рандомизируется. Из-за этого, сравнивая результаты 2 отдельных вызовов password_hash()
не собираются совпадать.
Функция, которую вы ищете password_verify()
, который принимает введенный пароль и хэш в базе данных. Если это возвращает true, то пароли совпадают.
Других решений пока нет …