Я создаю простую форму регистрации и входа с использованием PHP. При регистрации я создаю хэш с помощью функции password_hash(), а затем сохраняю его в БД. Во время входа сначала я создал новый хеш, используя функцию password_hash(), а затем сравнил его с сохраненным хэшем пароля.
Это все время не удавалось, потому что, как я теперь понимаю, новая соль используется каждый раз, когда вы создаете хэш пароля с помощью функции password_hash(). После исследования я узнал, что нужно использовать PHP-функцию password_verify(<plain_text_password>,<password_fetched_from_DB>).
Чего я не понимаю, так это того, как функция password_verify знает значение соли, которое использовалось ранее во время регистрации? Если соль неизвестна, тогда password_verify также должен завершиться ошибкой, как функция password_hash, при использовании для сравнения.
Я прочитал об этом дальше и узнал, что когда функция password_hash() используется для создания хэша, она также сохраняет значение соли внутри хеша? Например, если созданный хэш равен abcde12345, то может ли 12345 быть солт-значением?
Если это правда, то, глядя на хэш, можем ли мы сказать, что «эта» часть хеша на самом деле является значением соли? Всегда ли значение соли помещается в определенную позицию в хеше? Буду признателен, если кто-то поделится примером.