Если у вас есть криптографически безопасный генератор случайных чисел, вам не нужно хэшировать его вывод. На самом деле вы этого не хотите. Просто используйте
$token = openssl_random_pseudo_bytes($BYTES,true)
Где $ BYTES - сколько байтов данных вы хотите. MD5 имеет 128-битный хеш, поэтому достаточно 16 байт.
В качестве примечания: ни одна из функций, которые вы вызываете в исходном коде, не является криптографически безопасной, большинство из них достаточно опасны, поэтому использование только одной из них будет небезопасным, даже в сочетании с другими безопасными функциями. У MD5 есть проблемы с безопасностью (хотя для этого приложения они могут не иметь отношения). Uniqid не просто не генерирует криптографически случайные байты по умолчанию (поскольку он использует системные часы), добавленная энтропия, которую вы передаете, комбинируется с использованием линейного конгруэнтного генератора, что не является криптографически безопасным. Фактически, это, вероятно, означает, что можно было угадать все ваши ключи API, получив доступ к некоторым из них, даже если они не знали значение часов вашего сервера. Наконец, mt_rand (), то, что вы используете в качестве дополнительной энтропии, также не является безопасным генератором случайных чисел.