Я рекомендую НЕ использовать функцию MySQL ПАРОЛЬ (). Прочитайте документацию . В нем говорится:
ПАРОЛЬ () используется системой аутентификации на MySQL Сервере; Вы не должны использовать его в своих собственных приложениях.
Эта функция официально устарела в MySQL 5.7.6, а MySQL 8.0.11, функция ПАРОЛЬ () была удалена . Вы не можете перейти на текущую версию MySQL, если зависите от функции PASSWORD ().
Плохо использовать любую функцию в SQL, чтобы иметь sh пароли, потому что если вы делаете это, пароли в виде открытого текста (то есть до хэширования) будут появляться в ваших журналах запросов и двоичных журналах на основе операторов. Это слабая сторона безопасности вашего приложения, поэтому любой аудитор потребует от вас изменения.
Вместо этого лучший способ хеширования пароля в PHP - это использовать password_ha sh () , когда хранение пароля и password_verify () , когда при входе в систему необходимо проверить ввод по сохраненному паролю.
Если вы используете Laravel, изучите использование класса Ha sh : https://laravel.com/docs/6.x/hashing
Что касается вашего комментария к другому ответу:
, как я уже сказал, это для старой игры, и мы не можем изменить, как пароль зашифрован. в противном случае я бы c использовал бы метод ha sh.
Вам нужно исправить это или выйти из игры. Это небезопасно.
Вы можете изменить способ хранения паролей в приложении. Я сделал это в некоторых приложениях, которые я написал. Вы не можете отменить хэширование, поэтому вы не можете преобразовать существующие пароли в новый формат, но способ сделать это - разработать код для обработки обоих случаев. Код должен работать следующим образом:
- Добавить новый столбец в таблицу учетных записей для хранения нового формата пароля-ха sh.
- Когда пользователь входит в систему, проверьте ввод пользователя по старому паролю ha sh, как обычно. То есть, sh пользовательский ввод и сравнение результата с тем, что хранится в базе данных.
- Если ha sh ввода пользователя совпадает с ha sh, тогда ОБНОВИТЕ базу данных: сохраните новый формат ha sh в столбце нового пароля и назначьте NULL старому паролю. column.
- Измените код входа в систему, чтобы он выбирал оба столбца, и если столбец старого пароля имеет значение NULL, введите sh пользовательский ввод с новым методом и сравните его со столбцом нового пароля.
Постепенно, когда каждый пользователь входит в систему, его пароли будут "обновляться". После того, как все они обновлены, удалите столбец старого пароля и упростите свой логин-код, чтобы удалить старый метод хеширования.
Вполне возможно, что найдутся какие-то посторонние пользователи, которые никогда не будут входить в систему неделями или месяцами. Не жди их. Когда все обычные пользователи преобразовали свои пароли, просто удалите старые пароли. Пользователи бродяги должны будут восстановить пароль, если они когда-нибудь вернутся.