Сгенерировать случайный токен

Четыре способа получить криптостойкую случайную строку — и чем они отличаются по алфавиту и длине

openssl rand -hex 32
openssl rand -base64 32
head -c 32 /dev/urandom | base64
uuidgen

Разница не в стойкости, а в алфавите. hex безопасен везде: только 0-9a-f, не сломается ни в URL, ни в переменной окружения, ни в YAML без кавычек. base64 короче при той же энтропии, но содержит +, / и = — в URL их придётся кодировать.

uuidgen — не про секреты: UUIDv4 несёт 122 бита случайности, но его формат узнаваем, и как идентификатор он читается «публичным». Для токена доступа берите rand, для идентификатора записи — UUID.

Число в openssl rand N — это байты, а не символы итоговой строки: -hex 32 даст 64 символа, -base64 32 — 44.