Лично я просто использую библиотеку GUID и объединяю пару GUID, чтобы получить длинную уникальную строку токена. У вас также есть возможность удалить дефисы, чтобы вам было трудно узнать источник, и если вы хотите сделать его еще более сложным, вы можете случайно сократить строку до 10 символов, чтобы добавить сложности к ее неизвестной длине.
Я использую эту библиотеку для генерации моих GUID
https://packagist.org/packages/ramsey/uuid
use Ramsey\Uuid\Uuid;
$token = Uuid::uuid4() . '-' . Uuid::uuid4();
Извините, я упустил часть того, что вы хотите использовать полный набор из 26 буквенных символов с цифрой ... Не уверен, что у меня есть для вас ответ на этот счет, но вы должны верить в сложность угадывания UUID4, особенно когда вы сложите пару вместе и запутаете длину в 10 раз, чтобы угадать все сложнее.
На самом деле, если бы вы могли безопасно генерировать массив случайных чисел в диапазоне допустимых кодов символов ascii, то вы могли бы преобразовать весь случайный массив кодов в соответствующий символ ascii и объединить их вместе в одну строку.
function randomAsciiString($length) {
return implode('', array_map(
function($value) {
return chr($value);
},
array_map(
function($value) {
return random_int(33, 126);
},
array_fill(0, $length - 1, null)
)
));
}
echo randomAsciiString(128); // Normal 128 char string
echo randomAsciiString(random_int(118, 128)); // obfuscated length char string for extra complexity.
конечно, хотя ... вам следует помнить, что вы используете все стандартные клавиши на клавиатуре, и некоторые из этих символов могут расстраивать чувствительные вещи (например, кавычки и т. Д.)