Позвоните нам
Москва, 1-я Фрезерная улица, 2/1, корп. 2, офис 307
Время работы 9:00–18:00
®

Генератор случайных ключей openssl rand

Случайная строка нужной длины в hex или Base64 — то же, что даёт команда openssl rand -hex 32. Строки создаются в вашем браузере и никуда не передаются.

Часто нужно:

Что делает openssl rand -hex 32

Команда берёт 32 байта из криптографически стойкого генератора случайных чисел OpenSSL и выводит их в шестнадцатеричном виде: каждый байт — два символа из 0–9 и a–f. Получается строка из 64 символов, в которой 256 бит случайности. Число в команде — это байты, а не символы: openssl rand -hex 16 даёт 32 символа, openssl rand -hex 64 — 128. В таблице в столбцах «Hex» и «Base64» — длина строки в символах.

БайтБитHexBase64Для чего обычно
161283224идентификаторы, токены сессий, соль, ключ AES-128
241924832токены и ключи API
322566444секретный ключ приложения, подпись JWT (HS256) и вебхуков, ключ AES-256
483849664подпись HS384, ключи с запасом
6451212888подпись HS512 и HMAC-SHA512, секреты фреймворков, которым нужно 64 байта

Для чего нужны такие строки

  • Секретный ключ приложения — SECRET_KEY, APP_KEY, JWT_SECRET в файле .env или настройках сервиса.
  • Ключи API и токены доступа для интеграций между системами.
  • Секрет для подписи вебхуков — по нему получатель проверяет, что запрос пришёл от вас.
  • Ключ для AES: 16 байт — AES-128, 32 байта — AES-256. Программе нужен ключ именно такой длины в байтах; в каком виде его передать — hex или Base64, — смотрите в её документации.
  • Пароли служебных учётных записей — базы данных, Redis, очереди сообщений: их вводит не человек, поэтому длина не мешает. Пароль для людей удобнее создать генератором паролей, пару ключей для SSH — генератором RSA-ключей.

Hex или Base64

Hex — только цифры и буквы a–f: строку можно вставить куда угодно — в настройки, адрес, имя файла — без экранирования. Минус — длина: два символа на байт. Base64 короче (примерно 1,33 символа на байт), но в нём есть +, / и =, которые в ссылках и некоторых файлах настроек приходится экранировать. Base64url заменяет + и / на - и _ и обходится без = — так кодируют части JWT и токены в ссылках.

Если документация просит «ключ длиной 32 байта», ей нужны 32 байта после декодирования, а не 32 символа: в hex это 64 символа, в Base64 — 44.

Как получить такую строку без этой страницы

  • Linux и macOS: openssl rand -hex 32 или openssl rand -base64 32. При длине больше 48 байт OpenSSL переносит Base64 на новую строку — добавьте | tr -d '\n'.
  • Linux без OpenSSL: head -c 32 /dev/urandom | od -An -tx1 | tr -d ' \n'
  • Windows PowerShell: $b = New-Object byte[] 32; [Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($b); ($b | ForEach-Object { $_.ToString('x2') }) -join '' — hex; [Convert]::ToBase64String($b) — Base64. OpenSSL для Windows входит, например, в Git for Windows (Git Bash).
  • Python: python3 -c "import secrets; print(secrets.token_hex(32))"
  • Node.js: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Безопасно ли создавать ключи онлайн

На этой странице строки создаёт встроенный в браузер криптографически стойкий генератор (Web Crypto API, crypto.getRandomValues). Они не отправляются на сервер и нигде не сохраняются — это можно проверить в инструментах разработчика на вкладке «Сеть». Для важных систем надёжнее выполнить команду прямо на сервере, где ключ будет работать: тогда он не окажется ни в буфере обмена, ни в истории браузера.

Готовый ключ храните в менеджере паролей или хранилище секретов, а не в коде и не в репозитории. Если ключ мог попасть в чужие руки — замените его, а не ждите.