ByteCompress

Генератор UUID

Генерируйте криптографически случайные UUID версии 4 мгновенно в вашем браузере. Однократная или массовая генерация с использованием Web Crypto API по RFC 9562.

51
FreeClient-sideNo signup

UUID v4 имеет 122 случайных бита, что дает примерно 5.3×1036 возможных значений. Чтобы получить 50% вероятность единственной коллизии, вам нужно сгенерировать 2.71×1018 UUID. При скорости в один миллиард в секунду это займет 85 лет. UUID v4 стандартизирован в RFC 9562 (преемник RFC 4122) и является наиболее широко используемым форматом идентификатора в современных распределенных системах. Этот генератор использует API crypto.randomUUID() браузера, основанный на CSPRNG операционной системы. Генерируйте один UUID или сотни за раз - без сервера, без регистрации.

Как генерировать UUID

  1. Нажмите Генерировать, чтобы мгновенно создать один UUID.
  2. Введите количество (например, 10, 100, 1000) и нажмите Генерировать пакетно для создания нескольких UUID сразу.
  3. Нажмите любой UUID в списке, чтобы скопировать его по отдельности, или используйте Копировать все, чтобы скопировать весь список.
  4. Выберите верхний или нижний регистр формата вывода в зависимости от требований вашей целевой системы.
  5. Используйте Скачать, чтобы экспортировать в текстовый файл.

UUID v4 объяснен

Структура и формат

UUID состоит из 32 шестнадцатеричных символов в формате 8-4-4-4-12: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx. Число 4 в третьей группе фиксировано (версия 4). Первые 1-2 бита четвертой группы фиксированы как 10 в двоичном формате (вариант RFC 4122). Оставшиеся 122 бита генерируются случайным образом. UUID v4 встречается у всех крупных облачных провайдеров, системах баз данных и веб-фреймах как формат идентификатора по умолчанию.

Вероятность коллизии

С 2122 возможными значениями (~5.3×1036), генерация дубликата UUID v4 с использованием правильного CSPRNG статистически незначительна для любого реального приложения. Коллизии UUID v4 считаются невозможными для практических целей.

Пример

Сгенерированный UUID v4

f47ac10b-58cc-4372-a567-0e02b2c3d479

Тот же UUID в разных представлениях

С дефисами:  f47ac10b-58cc-4372-a567-0e02b2c3d479
В верхнем регистре:   F47AC10B-58CC-4372-A567-0E02B2C3D479
Без дефисов:  f47ac10b58cc4372a5670e02b2c3d479
Формат URN:  urn:uuid:f47ac10b-58cc-4372-a567-0e02b2c3d479

Сравнение версий UUID

  • v1 - Основан на времени, включает MAC-адрес генерирующей машины. Выявляет информацию о железе и имеет последовательные шаблоны. Избегайте для идентификаторов, чувствительных к безопасности.
  • v3 / v5 - Основан на имени и детерминированный: одно и то же входное пространство имен + имя всегда производит один и тот же UUID. Полезно для воспроизводимых идентификаторов.
  • v4 - Полностью случайный (122 бита). Нет встроенной информации, нет последовательных шаблонов. Наиболее широко используемый тип для идентификаторов, генерируемых приложениями.
  • v7 - Случайные UUID, упорядоченные по времени (RFC 9562). Первые 48 бит - это временная метка Unix в миллисекундах, что делает UUID v7 сортируемыми по времени создания. Лучше для производительности индекса B-дерева, чем v4.

Распространенные случаи использования

  • Первичные ключи в PostgreSQL (uuid тип), MySQL (VARCHAR(36)) и MongoDB
  • Идентификаторы распределенной системы, где несколько служб создают записи независимо без центральной последовательности
  • Идентификаторы ресурсов API, доступные в публичных URL (более безопасно, чем последовательные целые числа, которые позволяют атаки перебора)
  • Имена файлов для загруженных активов, чтобы предотвратить коллизии
  • Ключи идемпотентности для запросов API, чтобы предотвратить дублирование обработки при повторной попытке

Для генерации безопасных случайных паролей (а не идентификаторов) используйте Генератор паролей. Для идентификаторов, основанных на времени, которые также сортируемы в базе данных, ищите поддержку UUID v7 в вашем драйвере базы данных или ORM.

Часто задаваемые вопросы

Насколько уникален UUID версии 4 на практике?

UUID v4 имеет 122 бита случайности, что дает примерно 5.3×1036 возможных значений. Чтобы получить 50% вероятность единственного коллизии, вам нужно сгенерировать 2.71×1018 UUID - при скорости в один миллиард в секунду это займет около 85 лет. Для всех практических приложений коллизии UUID v4 считаются невозможными.

Являются ли UUID, сгенерированные здесь, криптографически безопасными?

Да. Этот инструмент использует crypto.randomUUID() (или crypto.getRandomValues() в качестве резервного варианта), оба основаны на CSPRNG операционной системы. Сгенерированные UUID подходят для использования в качестве токенов безопасности, идентификаторов сессий и других контекстов, чувствительных к безопасности.

Следует ли использовать UUID или автоинкрементные целые числа в качестве первичных ключей базы данных?

Оба варианта имеют свои плюсы и минусы. UUID v4 хорошо работает в распределенных системах, где несколько узлов генерируют идентификаторы независимо, делает идентификаторы непредсказуемыми в публичных URL (предотвращая атаки перебора) и упрощает объединение баз данных. Автоинкрементные целые числа проще, меньше (4-8 байт против 16 байт) и имеют лучшую производительность индекса B-дерева для последовательных вставок. UUID v7 предлагает компромисс: случайные UUID, которые также сортируются по времени.

Какой формат имеет UUID?

UUID состоит из 32 строчных шестнадцатеричных символов, сгруппированных с дефисами в формате 8-4-4-4-12: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx. Общая длина строки с дефисами составляет 36 символов. PostgreSQL хранит UUID как родной 16-байтовый бинарный тип; MySQL и SQLite обычно хранят 36-символьную строку.

Могу ли я генерировать UUID в оффлайн-режиме?

Да. После загрузки этой страницы генерация UUID полностью осуществляется с использованием локального JavaScript и встроенного API crypto браузера. Во время генерации сетевые запросы не выполняются. Инструмент работает в оффлайн-режиме после первоначальной загрузки страницы.