Хеширование — стандартная модель хранения паролей. В её основе лежит какой-то алгоритм, который меняет строку вида 1234 на хеш вида ab3278abeh27jan2j37jdbb. Тем самым, пароль в явном виде узнать невозможно.
Зато можно ответить при авторизации на один вопрос: верен ли пароль что вводит пользователь или нет?
Тем самым мы прогоняем пароль 1234 нашей функцией и смотрим, получили ли мы хеш ab3278abeh27jan2j37jdbb или нет. Если получили, значит пароль верен и мы можем авторизовать пользователя.
Данная схема удобна, т.к никто не знает пароль в явном виде кроме пользователя.
В PHP до недавнего времени использовалась хеш функция md5.
MD5 это старый 128 битный алгоритм хеширования. Разработан он был еще в 1991 году. Сейчас данный алгоритм использовать не рекомендуется.
Зато в версиях PHP5.3+ появилась встроенная хеш функция для паролей:
$hashedPassword
= password_hash(
'my super password'
, PASSWORD_DEFAULT);
Данная функция сама хеширует ваш пароль надёжным алгоритмом хеширования.
Чтобы проверить достаточно вызвать функцию:
$result = password_verify(
'the wrong password'
,
$hashedPassword
); // вернёт false