Генератор API-ключей

Случайная строка не является ключом, выданным другим сервисом.

Создайте секрет и зарегистрируйте его в своём приложении

Случайная строка не является ключом, выданным другим сервисом.

Шаг 1

Выберите представление

Соблюдайте требуемый формат. Постоянный префикс не добавляет случайности.

Шаг 2

Создавайте конфиденциально

Копируйте только в доверенные места. Очистка и изменение настроек отменяют ожидающие результаты.

Шаг 3

Экспортируйте и отзовите

Сохраните секрет и очистите экран. Действующий ключ отзывается в принимающем приложении.

Практические задачи

Секрет вебхука

Используйте 256-битное шестнадцатеричное значение, если ваш проверяющий код поддерживает формат.

Серверный токен

Base64URL и отдельный открытый ID упрощают поиск; ID не служит аутентификацией.

Набор для разработки

Десять токенов для локальных тестов. JSON сохраняет точные значения.

Набор из трёх новых демонстрационных токенов
Три новых токена иллюстрируют создание набора и копирование. Эти демонстрационные значения нигде не зарегистрированы и не предоставляют доступ к API какого-либо сервиса.

Идентификатор не является секретом

Необязательный ID — отдельное случайное 96-битное значение в hex. Оно находит запись, но не является UUID и не увеличивает число бит секрета.

UUID содержит поля версии и варианта; некоторые версии организуют время. Даже случайный UUID не выполняет автоматически требования протокола аутентификации.

Разделяйте ID, права и секрет. Проверяйте уникальность на сервере и заменяйте раскрытые секреты. Стандарт рассматривает это различие безопасности. Безопасность UUID в RFC 9562.

Байты и представление различаются

  1. 32 × 8 = 256Объём случайных байтов
  2. 64 HEX / 43 Base64URLРавнозначные кодировки
  3. N × log₂(A)Расчёт для алфавита
Пример расчёта, не секрет. Префиксы и ID не увеличивают энтропию.

Длина не доказывает случайность

32 случайных байта дают 256 номинальных бит: 64 hex-символа или 43 Base64URL без заполнения. Более длинное представление не сильнее.

N равномерных выборов из A символов теоретически дают N × log₂(A) бит. Выборка с отбраковкой предотвращает смещение от остатка деления, не сертифицируя источник.

Требуется crypto.getRandomValues; Math.random не используется как замена. Красивая выборка не проверяет браузер. NIST описывает генераторы, а не сертифицирует страницу. NIST SP 800-90A Rev. 1.

Методика и ограничения

Необходима криптографическая случайность. Для алфавитов применяется выборка с отбраковкой. Повторы проверяются только в текущем наборе. Очистка и выход отменяют ожидающие задачи; частичный набор не публикуется.

Доступ и права других сервисов не создаются. Ключи не попадают в ссылки или настройки. Буфер обмена и незашифрованные файлы находятся вне контроля страницы.

Сообщите формат, размер и вымышленный пример, никогда не настоящий секрет. Подтверждённая ошибка может потребовать замены ранее зарегистрированных ключей.

Методика и ограничения · Правила исправлений

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

Усиливает ли открытый ID секрет?

Нет. Это отдельная открытая метка для поиска.

Можно ли отменить ожидающий набор?

Да. Очистите результаты или выйдите до публикации.

Есть ли сертификация NIST?

Нет. Источники объясняют понятия, не сертифицируют сайт.

Для практической работы с секретами

Простая задача остаётся простой: выберите формат, создайте и скопируйте ключ. Для особых интеграций доступны кодировки байтов, алфавиты, метки приложения, отдельные публичные ID и наборы до 1 000 ключей.

Регистрация и установка не нужны. Описания ниже помогают выбрать параметры осознанно, а не считать любую визуально длинную строку более стойкой.

Форматы под требования приложения

Base64URL избегает плюса и косой черты обычного Base64 и не использует заполнение. Hex удобно проверять и широко поддерживается, но для тех же байтов требуется больше символов.

Base32 использует A–Z и 2–7, здесь без заполнения. Обычный Base64 сохраняет стандартное заполнение.

Всегда сверяйтесь с требованиями принимающего приложения: кодирование не является шифрованием.

Допустим, приложение принимает не больше 48 символов, включая префикс dev_. При 256 битах Base64URL даёт 43 случайных символа, поэтому четырёхсимвольный префикс даёт 47 символов в сумме. Hex даёт 64 случайных символа и привёл бы к 68, что уже не помещается. Суффикс расходует тот же лимит. Случайная длина и общая длина, которые показывает инструмент, отвечают на разные вопросы: первая описывает секретную часть, вторая показывает, сколько должно вместить принимающее поле. В RFC 4648 объясняется, почему представления одних и тех же байтов имеют разную длину. Перед выбором более короткого формата проверьте не только лимит, но и допустимый алфавит принимающей стороны.

Свой алфавит без вводящих в заблуждение оценок

Выберите буквы, цифры, заданный набор знаков или собственные печатные символы ASCII. Повторяющиеся символы удаляются, чтобы не повышать вероятность их выбора.

Фильтр похожих символов удаляет 0, O, 1, I, l и |. Цель в битах определяет необходимую длину; точное число символов помогает соблюсти ограничение поля.

Чем меньше алфавит, тем больше символов нужно для той же теоретической энтропии.

Для своего алфавита «печатные» здесь означает символы ASCII без пробелов: буквы с диакритикой, эмодзи, табуляции и пробелы отклоняются. После удаления повторов и возможного удаления похожих символов должно остаться не менее двух разных вариантов. Если алфавит стал недопустимым, измените его осознанно, а не ожидайте, что инструмент подставит другой. Для префиксов и суффиксов действует другое правило: каждый может содержать до 32 латинских букв, цифр или символов _ . : -. Строка, принятая как алфавит, не обязательно подходит как метка.

Точное число символов применяется к символьным алфавитам, а не к байтовым кодировкам. Фиксированный лимит поля не означает автоматически фиксированный объём случайности. Например, 32 равномерно выбранных шестнадцатеричных символа дают 128 теоретических бит, тогда как 32 выбора из алфавита с 64 разными символами дают 192. Если поле слишком короткое для требуемого приложением размера, не обрезайте уже созданное значение и не считайте его метку случайными символами. Выберите совместимое представление и проверьте итоговый расчёт до генерации; если ни одна допустимая комбинация не помещается, требование приложения нужно уточнить.

Начальные настройки, а не ключи провайдеров

API-токен использует Base64URL на 256 бит. Секрет вебхука задаёт 256-битный hex для вашей системы проверки с общим секретом.

Секрет приложения использует Base64URL на 512 бит; Набор для разработки готовит десять 256-битных токенов. Это удобные настройки, не универсальные стандарты и не ключи сторонних компаний.

Префикс и суффикс обозначают приложение или среду. Метка live_ сама по себе не активирует ключ и не даёт прав.

От одного ключа до удобного экспорта

Копируйте отдельные секреты или весь набор. Необязательные пары добавляют отдельный публичный 96-битный случайный ID для поиска записи.

Секрет храните приватно и не используйте ID для аутентификации. JSON сохраняет значения точно.

TXT поддерживает строки, запятые или пробелы. CSV экранирует ячейки и обезвреживает начало формулы, иногда добавляя апостроф. .env проверяет имена и отклоняет несовместимые кавычки.

Он предназначен для Node dotenv, не для shell-скриптов. Скачанные файлы содержат открытые секреты, а не зашифрованные резервные копии.

Скрытие результатов полезно, когда экран виден другим людям, но 24 точки маски — это условность отображения, а не длина секрета. Копирование и экспорт по-прежнему содержат настоящие значения. Изменение настроек генерации очищает показанный набор, включая смену формата: инструмент готовит новую генерацию, а не переводит старый секрет в другую кодировку. Сначала безопасно передайте нужный набор, затем меняйте эти настройки. В диалоге экспорта смена формата файла или разделителя TXT только переоформляет тот же набор.

На странице показываются только 20 результатов, но Копировать всё и экспорт используют весь набор. При включённых парах ID отдельная кнопка Копировать копирует только секрет. JSON без пар — это массив строк; с парами — массив объектов с полями key_id и api_key. Проверьте, что программа импорта ожидает такую структуру, а не считайте публичный ID вторым секретом и не исходите из того, что первая видимая страница — это весь скачиваемый файл. При регистрации записей учётных данных сохраняйте связь выбранного ID и секрета.

Выбирайте JSON, когда машина должна получить точные символы секрета. CSV подготовлен для просмотра в электронных таблицах: значение, начинающееся как формула, например -example, может получить начальный апостроф, поэтому обычный CSV-парсер может прочитать другое буквальное значение. Пример вымышленный, это не пригодный ключ. Не удаляйте апострофы из каждого импортированного ключа: апостроф тоже может быть настоящим символом алфавита. Рекомендации OWASP по CSV-инъекциям объясняют и интерпретацию формул, и пределы экранирования для таблиц. Повторное сохранение CSV в табличной программе не является универсальной гарантией безопасности и создаёт лишний этап обработки рабочего секрета.

Для .env допустимо имя вроде APP_TOKEN; 1TOKEN или APP-TOKEN недопустимы. Инструмент ограничивает имя 64 символами и отклоняет значения с двойной кавычкой или обратной косой чертой, вместо того чтобы угадывать, как их истолкует другой загрузчик. Node.js документирует собственный синтаксис dotenv; для других программ, читающих файл, нужна отдельная проверка совместимости. Если экспорт отклоняет значение из своего алфавита, используйте JSON или контролируемую передачу, подходящую этому приложению. Переименование скачанного файла не удаляет несовместимые символы, а файл .env с секретами всё равно требует защищённого хранения.

Как рассчитываются биты, байты и символы

Для байтовых форматов берётся ceil(целевые биты / 8) случайных байт, то есть байты × 8 номинальных бит. Для N независимых равномерных символов из алфавита размером A теоретическая энтропия равна N × log₂(A).

Для заданной цели нужно ceil(целевые биты / log₂(A)) символов. Например, 256 бит только из цифр требуют 78 цифр, не 32.

Постоянные префиксы, суффиксы и публичный ID не учитываются в энтропии секрета. Это расчёт схемы генерации, не измерение и не сертификация случайности браузера.

Одно случайное значение в разных представлениях

32 bytes × 8 = 256 bits

КодировкаСимволов из 32 байт
Hex64
Base64URL43
Base6444
Base3252

Длины указаны без префиксов и суффиксов. Кодировка меняет представление, но не исходную случайность.

Наша методика генерации

Используется crypto.getRandomValues в безопасном контексте. Замены на Math.random, время, действия клавиатуры или предсказуемое начальное значение нет.

Кодировки байтов не теряют данные. Для алфавитов применяется выборка с отбрасыванием: значения неравномерного остатка исключаются перед сопоставлением символам.

Это предотвращает смещение от простого взятия по модулю, когда размер алфавита не делит 256. Каждый набор проверяется на повторяющиеся секреты и ID.

Число повторных попыток ограничено; при сбое частичный набор не выдаётся.

Что остаётся в браузере

Генерация и подготовка экспорта выполняются локально. ClockTools не отправляет значения на серверы и не записывает их в URL, аналитику или постоянное хранилище.

Даже при переходе с другого инструмента страница открывает новый документ без наших загрузчиков аналитики и записи сессий. В сохранённые настройки и ссылки не входят свободные текстовые поля или ключи.

Обычные запросы страницы всё равно поступают хостинг-провайдеру. Копирование переносит значение в буфер обмена, скачивание создаёт открытый файл.

Расширения, синхронизация буфера, вредоносное ПО и посторонние взгляды остаются рисками. Очистка убирает результаты из интерфейса, но не гарантирует безопасное стирание памяти и не удаляет внешние копии.

Безопасное применение ключа

Случайная строка становится API-ключом только после регистрации и проверки в вашем приложении. Настройте минимальные права, HTTPS, отзыв, срок действия и ротацию в приложении.

Не встраивайте серверные секреты во frontend и не сохраняйте их в репозиториях. Для рабочих ключей нужна подходящая система управления секретами.

В чувствительных средах предпочтительна генерация в собственной доверенной инфраструктуре. Примеры Node.js, Python и OpenSSL создают новые локальные секреты, не копируя значения с сайта.

Ни один сайт не гарантирует, что браузер или устройство не скомпрометированы.

Что проверяют тесты и чего они не доказывают

Регрессионные тесты проверяют длины, известные векторы кодирования, алфавиты, выборку с отбрасыванием, энтропию, добавления, дубликаты, экспорт и безопасную сериализацию настроек. Эти автоматизированные тесты не подтверждают надёжность во всех браузерах и на всех устройствах, работу системного буфера обмена, сохранение файлов или работу аналитики на опубликованном сайте.

Отсутствие дубликатов или внешне ровное распределение не доказывает криптографическую случайность. Независимой сертификации у инструмента нет, а тесты нашего кода не заменяют аудит всего приложения.

Сообщайте о проблемах, не раскрывая секреты

Укажите формат, режим длины, число бит или символов, количество, браузер и воспроизводимые шаги. Используйте вымышленный пример, не действующий ключ, секрет вебхука или данные клиента.

Действует наша Политика исправлений. При подтверждённом существенном дефекте следует описать затронутое поведение, добавить регрессионный тест и указать необходимость пересоздания прежних ключей.

Изменение страницы не отзывает ключи, зарегистрированные в других системах: замените или отзовите их там.

Создать на своём компьютере

Примеры создают новый секрет выбранного формата с заданными префиксом и суффиксом. Они не содержат показанный ключ и не создают учётные записи, права или сроки действия. Публичные ID и пакетная генерация не включены.

import { randomBytes } from 'node:crypto';
const key = "" + randomBytes(32).toString('base64url') + "";

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

Можно ли создать действующий ключ для стороннего API?

Нет. Получите его у провайдера. ClockTools создаёт случайные строки для ваших приложений, не сторонние аккаунты, кредиты или права доступа.

Делают ли 512 бит любую интеграцию безопаснее?

Не автоматически. Общий вариант по умолчанию — случайный секрет на 256 бит, но формат и размер определяются протоколом и приложением. Хорошая случайность не устраняет утечки, отсутствие авторизации или небезопасное хранение.

Почему 32 случайных символа не всегда равны 256 битам?

Важен алфавит. 32 равномерных hex-символа дают 128 бит, 32 десятичных цифры — около 106,3 бит. 32 случайных байта дают 256 номинальных бит и требуют 64 hex-символа либо 43 символа Base64URL без заполнения.

Гарантируется ли уникальность всех ключей?

Всемирной гарантии нет. Мы выявляем дубликаты в текущем наборе. При достаточном числе случайных бит совпадения крайне маловероятны, но принимающая система всё равно должна требовать уникальности записей.

Можно ли поделиться настройками без секрета?

Да. Ссылка содержит только предопределённые формат, размер, количество и переключатели. Ключи, префиксы, суффиксы и собственные алфавиты исключаются. Свой алфавит при сохранении или передаче заменяется на Base64URL.

Отзывает ли очистка результатов ключ?

Нет. Она убирает только показанный набор. Отзовите или замените активный ключ в приложении, которое его принимает. История буфера, скачанные файлы и ранее раскрытые копии этому инструменту неподконтрольны.

Источники и другие инструменты

Методика и ограничения: Web Crypto · RFC 4648

Генератор GUID · Методика и ограничения · Политика исправлений