За последние 24 часа нас посетили 34723 программиста и 1755 роботов. Сейчас ищут 982 программиста ...

Сменить ХэШ md5 на password_hash

Тема в разделе "PHP для новичков", создана пользователем General_App, 24 янв 2017.

  1. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    Сейчас есть рега с Мд5+соль хочу сменить на password_hash
    Есть в БД юзеры и записи хэша мд5 как сменить текущих пользователей на password_hash
    Есть ли какая функция? password_needs_rehash. Не катит.
    Мысли такие как всех перевести.
    Рега новых юзеров работает на password_hash а старых переводим таким способом
    При авторизации узнавать размер хэша юзера,
    если ==32 то pass перводить в МД5 и сравнивать хэши если все гуд проходим авторизацию и pass переводим в password_hash
    если ==60 то password_verify проходим авторизацию.
    И так ждать пока основная масса не перейдет на хэш 60 а потом просто убрать проверку md5
     
  2. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Просто при авторизации проверь, нормальный ли хэш. Эсли нормальный - просто авторизуй, если старый (Твой md5) - изменяй запись, вноси туда новый хэш, полученный password_hash. Только не знаю как проверить. Можно сверить длину, например,или ещё каким способом.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Почему не катит?
     
  4. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    password_needs_rehash() она работает только с password_hash() и преганяет хэш только на другую соль или нагрузку меняет.
    Как я понял, и Md5 я туда не как не мог притулить его просто в этом Api наверно нет.
    Вырезка:
    Алгоритм, который используется по умолчанию - bcrypt, но в будущем будут добавлены и другие, более продвинутые алгоритмы.
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А я думаю, что она просо проверяет, корректен ли шеш, и если некорректен - возвращает false. То есть, если передать туда md5 то будет норм. Попробуй. Я точно не знаю.
     
  6. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    PHP:
    1. if (password_needs_rehash($hash, MD5)) {
    2. $hash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);
    3. }
    Пробовал так и подругому хз не получалось.
     
  7. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А зачем ты туда "MD5" передаёшь Передай PASSWORD_DFAULT. Он же сравнивает с нужным типом хеширования. Если не такой- возвращает false. Попробуй password_needs_rehash($hash,PASSWORD_DEFAULT,['cost'=>12])
     
  8. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    @SamyRed
    PHP:
    1. Echo "$hash<br>";
    2.  
    3. if (password_needs_rehash($hash,PASSWORD_DEFAULT)) {
    4. $hash2 = password_hash($pass, PASSWORD_DEFAULT);
    5. }
    6. Echo "$hash2";
    Точняк работает, я думал надо указать Md5
    b0baee9d279d34fa1dfd71aadb908c3f
    $2y$10$K3ZAWNczQLi4QpV.v0HnqeZKOcdfNUGmjThvmHhlq.LFeeuAFZ9I6
     
  9. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну и хорошо что работает:)
     
    General_App нравится это.
  10. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    Теперь просто достать хэши из БД изменить и перезаписать в базу новые и вуаля готово.
    Спасибо
     
  11. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Спасибо здесь заменяет кнопка "Лайк":)
     
    General_App нравится это.