Да, было много статей на тему «Все пароли нужно хранить, предварительно захэшировав их в MD5», но примерно в 2016 году это утверждение потеряло свою актуальность. Использование его для токенов и паролей, да еще и без "соли", это преступление.
Что же делать?
Для этого давно придумали две достаточно удобных функции password_hash() и password_verify(). Да, больше не надо самостоятельно писать функции для создания хешей, добавления соли, и проверки всего этого дела.
Также, для генерирования случайного токена можно использовать конструкцию
$token = bin2hex(random_bytes(16));radnom_bytes() — была добавлена в 7 версии PHP, умеет генерировать криптографически безопасные псевдослучайные байты.
bin2hex() — Преобразует бинарные данные в шестнадцатеричное представление.
То есть выражение выше сгенерирует вам случайную строку длинной 32 символа.
Конечно, есть огромная куча сторонних библиотек, позволяющих решить подобные задачи. Но если вы не хотите париться, при этом хоть как-то заботитесь о безопасности приложения, то используйте готовые функции из коробки.
Ставь 🍺, если готов дать md5 умереть :)