Я немного смущен этим вопросом.
Когда пользователь вводит свой пароль на вашем веб-сайте, вы можете предположить, что значение в $_POST['password']
(или как вы его называете) в виде простого текста.Даже если пользователь использует результат хеш-функции в качестве своего пароля, это не имеет значения, поскольку для вашего приложения это все еще простой текст.Таким образом, хешированное значение является паролем пользователя, независимо от того, какие шаги они предприняли для его создания, поскольку запись этого значения в систему приводит к доступу для этого пользователя.Смысл хэширования пользовательских паролей на сервере заключается в том, что даже вы не знают пароль этого пользователя.Таким образом, если ваша база данных взломана, пароль пользователя не раскрывается.
Когда у вас есть пароль, вы извлекаете его из базы данных с помощью соли и хэшированного пароля.Вы берете отправленную форму, хешируете ее с солью пользователя и затем сравниваете ее с предварительно хешированным паролем из базы данных.Если хешированная отправка и предварительно хешированные значения базы данных совпадают, то вы можете предположить, что был введен правильный пароль.
Единственная причина, по которой я могу видеть действия, описанные вами, - это то, что вы ранее сохранили свои паролив простом тексте, и в настоящее время в процессе преобразования их всех в хэши.В этом случае вы должны просто назначить каждому пользователю уникальную соль, хэшировать его текущий текстовый пароль + соль и сохранить его как новый пароль.Это преобразование должно происходить сразу, когда «хэш-слова» включены, а не по частям, когда пользователи входят в систему в первый раз после перехода.