Всем привет. Бывает возникают ситуации когда нам необходимо генерировать уникальную строку из произвольно взятых символов. Это может быть хэш, токен и т.п.
Для генерации уникальных строк в php мы можем воспользоваться следующими функциями:
random_bytes() - генерирует безопасные псевдослучайные байты
openssl_random_pseudo_bytes() - генерирует псевдослучайную последовательность байт
В качестве аргумента данные функции принимают целое число(количество символов строки).
$token1 = random_bytes(20);
$token2 = openssl_random_pseudo_bytes(20);
var_dump($token1,$token2);
В результате у нас вернется две строки в бинарном представлении из двадцати символов. Следовательно такие строки нас не устраивают и мы хотим привести их к читаемому виду.
Для этого мы можем воспользоваться следующими функциями:
bin2hex() - данная функция преобразует бинарные данные в шестнадцатеричное представление
base64_encode() — Кодирует данные в формат MIME base64
Пример с bin2hex() :
$token1 = bin2hex(random_bytes(20));
$token2 = bin2hex(openssl_random_pseudo_bytes(20));
var_dump($token1,$token2);
В результате мы получаем две строки длиной 20 символов каждая, состоящих из латинских символов и цифр.( 8acf74f51fcd234f79e9ee9e831a9880b0743ba8)
Пример c base64_encode():
$token1 = base64_encode(random_bytes(20));
$token2 = base64_encode(openssl_random_pseudo_bytes(20));
var_dump($token1,$token2);
Здесь же у нас помимо латинских символов и цифр, в строках присутствуют символы (=,+,/). И еще заметьте, что попадаются символы в разном регистре и неизменным остается последний символ строки (=).(eRwAW1UUoeRkPo0BiGOG92ttk8Q=)
Вот так мы можем генерировать случайную уникальную строку на php.
На этом данная статья подошла к концу. Желаю успехов и удачи! Пока!