# Генератор криптостойкой случайности

Генерирует криптостойкий случайный ключевой материал по бюджету энтропии — запросите N бит энтропии, получите вывод hex/base64/base64url. Также поддерживает строки со своим алфавитом через crypto.randomInt (внутренний отсев с отклонением, без модульного смещения). Для любого секрета/ключа/токена используйте это вместо инструментов на Math.random.

> Каноническая страница: https://elysiatools.com/ru/tools/secure-random-generator

- **Категория:** Security

- **Ключевые слова:** случайный, криптослучайный, CSPRNG, ключ, генерация, энтропия, hex, base64, безопасность

## Обзор

Этот инструмент генерирует **криптостойкий случайный ключевой материал**. В отличие от существующих генераторов случайных строк и паролей (использующих `Math.random()` и непригодных для секретов), этот инструмент энтропийно-управляемый и на базе CSPRNG.

**Ввод, управляемый энтропией.** Вы задаёте целевую энтропию в *битах* (по умолчанию 256, шаг 8) — нужную стойкость — и инструмент сам выводит число байт (`bytes = ceil(bits/8)`). Это правильная мысленная модель для ключей: секрету JWT HS256 нужно 256 бит энтропии независимо от того, сколькими символами он представлен. Думайте не «сколько символов», а «сколько стойкости».

**Две ветви вывода:**

1. **Байтовая кодировка** (по умолчанию — оставьте Свой алфавит пустым). Генерирует `ceil(entropyBits/8)` случайных байт через `crypto.randomBytes()` и показывает тот же материал в **трёх кодировках рядом** — hex, base64, base64url — чтобы вы скопировали ту, что ожидает потребитель. Каждый байт даёт 8 бит энтропии, поэтому фактическая энтропия всегда равна запрошенной.

2. **Свой алфавит** (заполните Свой алфавит). Выбирает `crypto.randomInt(размерАлфавита)` на символ — внутренний отсев Node, **без модульного смещения**, без ручного цикла. Фактическая энтропия `длина × log₂(размерАлфавита)`, может быть *меньше* запрошенной (напр. алфавит из 32 символов × 10 знаков = 50 бит, а не 256); инструмент предупреждает красным, когда так — короткая строка со своим алфавитом может быть намного слабее, чем кажется.

**Зачем три кодировки рядом?** 256-битный ключ — это 64 hex-символа, ~44 base64 или 43 base64url. Разные системы ждут разные форматы; показ всех трёх позволяет выбрать верный без перезапуска.

Сценарии: ключи AES-256, ключи HMAC, секреты подписи JWT, API-ключи, секреты сессий, любое значение, которое злоумышленник не должен угадать. `crypto.randomBytes()` и `crypto.randomInt()` берут из CSPRNG ОС — никогда `Math.random()`.

## Входные данные

- **Энтропия (биты)** (number): e.g. 256
- **Кодировка вывода** (select)
- **Свой алфавит (опц.)** (text): e.g. abcdefghijklmnopqrstuvwxyz (leave empty for byte encoding)
- **Своя длина строки** (number): e.g. 32
- **Количество** (number): e.g. 1

## Когда использовать

- При создании секретных ключей для симметричного шифрования (например, AES-256) или подписи токенов (HMAC/JWT).
- Для генерации безопасных API-ключей, сессионных токенов и паролей с использованием настраиваемого алфавита без модульного смещения.
- Когда требуется гарантировать криптографическую стойкость случайных данных и избежать уязвимостей, связанных с использованием небезопасного метода Math.random().

## Как это работает

- Вы задаете целевой уровень энтропии в битах, на основе которого инструмент автоматически рассчитывает необходимый объем байт.
- Генератор запрашивает случайные байты у системного источника энтропии (CSPRNG) с помощью функций crypto.randomBytes или crypto.randomInt.
- Полученный материал кодируется и выводится одновременно в форматах hex, base64 и base64url для удобства копирования.
- При использовании своего алфавита инструмент применяет алгоритм отсева с отклонением, исключая модульное смещение и сохраняя равномерное распределение символов.

## Сценарии использования

- Генерация секретных ключей подписи для JWT (JSON Web Tokens) с гарантированной стойкостью 256 или 512 бит.
- Создание уникальных и непредсказуемых API-токенов для авторизации внешних интеграций с использованием безопасного набора символов.
- Инициализация криптографических солей, векторов инициализации (IV) и ключей шифрования для баз данных и конфигурационных файлов.

## Частые вопросы

### Почему этот генератор безопаснее обычных генераторов паролей?

Он использует криптографически стойкий генератор псевдослучайных чисел (CSPRNG) операционной системы, а не Math.random(), что исключает предсказание значений.

### Что такое бюджет энтропии?

Это мера стойкости ключа в битах. Например, для ключа AES-256 требуется ровно 256 бит чистой энтропии независимо от формата кодирования.

### Почему вывод показывается сразу в трех кодировках?

Разные программные библиотеки требуют разные форматы представления байт (hex, base64 или безопасный для URL base64url). Вы можете скопировать нужный без повторной генерации.

### Как работает генерация со своим алфавитом?

Инструмент выбирает символы с помощью crypto.randomInt с отсевом отклонений. Это гарантирует, что у всех символов алфавита абсолютно равные шансы на появление.

### Почему появляется предупреждение о низкой энтропии при использовании своего алфавита?

Если длина строки и размер алфавита дают суммарную энтропию меньше, чем запрошено в настройках, инструмент предупреждает о снижении криптостойкости.

## Связанные инструменты

- [Генератор и Проверка Ed25519 / X25519](https://elysiatools.com/ru/tools/ed25519-x25519-keygen-signature-verifier): Создает ключи Ed25519 или X25519 и поддерживает подпись и проверку сообщений Ed25519
- [Генератор хешей текста](https://elysiatools.com/ru/tools/text-hash-generator): Вычисляет MD5, SHA-1, SHA-256, SHA-512 и CRC-32 любого текста сразу. Возвращает hex и Base64 по UTF-8 кодировке.
- [Генератор цифровой подписи](https://elysiatools.com/ru/tools/digital-signature-generator): Подписывает сообщение приватным ключом или проверяет подпись публичным — поддерживает RSA-PSS (SHA-256), ECDSA (P-256) и Ed25519. Чисто локальная криптография (Node crypto.createSign/createVerify), без сети. Вставьте PEM-ключ для подписи или проверки base64-подписи. Инструмент только подписывает/проверяет; он не генерирует пары ключей.
- [Генератор PKCE Code Verifier и Challenge](https://elysiatools.com/ru/tools/pkce-code-verifier-generator): Создание, проверка и верификация пар code_verifier / code_challenge PKCE (RFC 7636) для OAuth2 / OIDC. Три режима: (1) создать новую пару из криптостойких случайных байт (256/384/512/768 бит), (2) аудит имеющегося verifier по RFC — длина (43–128), набор \[A-Za-z0-9-._~\] и ≥256 бит энтропии, (3) проверить пару, пересчитав BASE64URL(SHA256(verifier)). При желании строит полный URL запроса авторизации и тело обмена токена. Дополняет универсальный nonce-generator (только выдаёт пару) аудитом соответствия RFC и проверкой пар.
- [Шифрование / Расшифрование RSA](https://elysiatools.com/ru/tools/rsa-encrypt-decrypt): Шифрует текст открытым ключом RSA или расшифровывает шифртекст соответствующим закрытым ключом, с OAEP-паддингом (SHA-1 или SHA-256). Длинные сообщения бьются на блоки. Ключи и данные обрабатываются локально. PKCS#1 v1.5 не предлагается (Node отключает его для расшифровки из-за атак Bleichenbacher).
- [Контрольная сумма CRC32](https://elysiatools.com/ru/tools/crc32-checksum): Вычисляет CRC32 (полином IEEE 802.3) для текста или байтов. Вывод в hex, десятичном или двоичном виде. Принимает текст (UTF-8) или байты через hex/base64.
- [Генератор Data URI](https://elysiatools.com/ru/tools/data-uri-generator): Преобразует файлы в Data URI (Base64 или процентное кодирование) для встраивания изображений, шрифтов и ресурсов прямо в HTML, CSS или Markdown
- [Сравнение хеш-алгоритмов](https://elysiatools.com/ru/tools/hash-algorithm-comparator): Хеширует один и тот же вход с помощью MD5, SHA-1, SHA-256, SHA-512, BLAKE2b и BLAKE3 и сравнивает их: длину, hex/Base64-дайджест, статус безопасности (взломан/современный) и относительный бенчмарк скорости. Полезно для обучения, выбора алгоритма и проверки контрольных сумм.

## Примеры

- [MP3 Аудио Образцы Без Авторских Прав](https://elysiatools.com/ru/samples/mp3-samples): Коллекция аудио образцов без авторских прав для тестирования и разработки, включая звуки природы, медитативную музыку и фоновое аудио
- [Примеры Обработки Изображений Android Java](https://elysiatools.com/ru/samples/android-image-processing-java): Примеры обработки изображений Android Java включая чтение/сохранение, масштабирование и преобразование формата
- [Примеры Обработки Изображений Android Kotlin](https://elysiatools.com/ru/samples/android-image-processing-kotlin): Примеры обработки изображений Android Kotlin включая чтение/сохранение, масштабирование и преобразование формата
- [Примеры Обработки Изображений Web Python](https://elysiatools.com/ru/samples/web-image-processing-python): Примеры обработки изображений Web Python используя PIL/Pillow включая чтение, сохранение, изменение размера и преобразование формата

## Связанные материалы

- [Инструменты для токенов, сессий и 2FA](https://elysiatools.com/ru/hubs/token-session-and-2fa-workflows): Отлаживайте реальные сценарии входа с генераторами PKCE и nonce, разбором JWT и JWK, проверкой HMAC, тестами OTP и TOTP и удобными для auth идентификаторами в одном сфокусированном hub.
- [Инструменты конвертации регистра, кодировки и нормализации текста](https://elysiatools.com/ru/hubs/text-convert): Сравните в одном хабе конвертацию регистра, ширины символов, кодировок, работу с quoted-printable и встроенную нормализацию текста.
- [Инструменты Text](https://elysiatools.com/ru/hubs/text-utility): Изучите 33 инструментов text для сценариев utility и быстро сравните близкие утилиты.
- [Инструменты анализа текста, читаемости и проверки содержания](https://elysiatools.com/ru/hubs/text-analyze): Сравните в одном хабе текстовую статистику, определение языка, оценку читаемости, анализ тональности, модерацию и анализ шаблонов.
