Wenn Sie einen kryptografisch sicheren Zufallszahlengenerator haben, müssen Sie dessen Ausgabe nicht hashen. Tatsächlich willst du nicht. Benutz einfach
$token = openssl_random_pseudo_bytes($BYTES,true)
Wobei $ BYTES wie viele Datenbytes Sie möchten. MD5 hat einen 128-Bit-Hash, also reichen 16 Bytes.
Nebenbei bemerkt, keine der Funktionen, die Sie in Ihrem Originalcode aufrufen, ist kryptografisch sicher. Die meisten sind so schädlich, dass die Verwendung nur einer Funktion unsicher wäre, selbst wenn sie mit sicheren anderen Funktionen kombiniert wird. MD5 weist Sicherheitsprobleme auf (obwohl diese für diese Anwendung möglicherweise nicht relevant sind). Uniqid generiert nicht nur standardmäßig keine kryptografisch zufälligen Bytes (da es die Systemuhr verwendet), sondern die hinzugefügte Entropie, die Sie übergeben, wird mithilfe eines linearen kongruenten Generators kombiniert, der nicht kryptografisch sicher ist. In der Tat bedeutet dies wahrscheinlich, dass Sie alle Ihre API-Schlüssel erraten können, wenn Sie Zugriff auf einige von ihnen haben, selbst wenn sie keine Ahnung vom Wert Ihrer Serveruhr hatten. Schließlich ist mt_rand (), was Sie als zusätzliche Entropie verwenden, auch kein sicherer Zufallszahlengenerator.