Сейчас есть рега с Мд5+соль хочу сменить на password_hash Есть в БД юзеры и записи хэша мд5 как сменить текущих пользователей на password_hash Есть ли какая функция? password_needs_rehash. Не катит. Мысли такие как всех перевести. Рега новых юзеров работает на password_hash а старых переводим таким способом При авторизации узнавать размер хэша юзера, если ==32 то pass перводить в МД5 и сравнивать хэши если все гуд проходим авторизацию и pass переводим в password_hash если ==60 то password_verify проходим авторизацию. И так ждать пока основная масса не перейдет на хэш 60 а потом просто убрать проверку md5
Просто при авторизации проверь, нормальный ли хэш. Эсли нормальный - просто авторизуй, если старый (Твой md5) - изменяй запись, вноси туда новый хэш, полученный password_hash. Только не знаю как проверить. Можно сверить длину, например,или ещё каким способом.
password_needs_rehash() она работает только с password_hash() и преганяет хэш только на другую соль или нагрузку меняет. Как я понял, и Md5 я туда не как не мог притулить его просто в этом Api наверно нет. Вырезка: Алгоритм, который используется по умолчанию - bcrypt, но в будущем будут добавлены и другие, более продвинутые алгоритмы.
А я думаю, что она просо проверяет, корректен ли шеш, и если некорректен - возвращает false. То есть, если передать туда md5 то будет норм. Попробуй. Я точно не знаю.
PHP: if (password_needs_rehash($hash, MD5)) { $hash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]); } Пробовал так и подругому хз не получалось.
А зачем ты туда "MD5" передаёшь Передай PASSWORD_DFAULT. Он же сравнивает с нужным типом хеширования. Если не такой- возвращает false. Попробуй password_needs_rehash($hash,PASSWORD_DEFAULT,['cost'=>12])
@SamyRed PHP: Echo "$hash<br>"; if (password_needs_rehash($hash,PASSWORD_DEFAULT)) { $hash2 = password_hash($pass, PASSWORD_DEFAULT); } Echo "$hash2"; Точняк работает, я думал надо указать Md5 b0baee9d279d34fa1dfd71aadb908c3f $2y$10$K3ZAWNczQLi4QpV.v0HnqeZKOcdfNUGmjThvmHhlq.LFeeuAFZ9I6