Перейти к содержанию
Избранное

Генератор UUID

Обновлено:

Генерируйте от одного до 100 случайных UUID версии 4 прямо в браузере. Выберите нужное количество, переключайтесь между верхним и нижним регистром шестнадцатеричных цифр и копируйте результаты с дефисами или без них.

Генератор UUID (v4)

Поля ввода
Сколько UUID сгенерировать (1–100).
Если включено, результат будет автоматически обновляться при изменении любого значения.

Формула UUID v4

Формула
\\[ \\text{xxxxxxxx-xxxx-}\\underbrace{4}_{\\text{версия}}\\text{xxx-}\\underbrace{y}_{\\text{вариант}}\\text{xxx-xxxxxxxxxxxx} \]

Где:

  • \(x\) — случайная шестнадцатеричная цифра (0–9, a–f), всего 122 случайных бита
  • \(4\) — фиксированный полубайт версии, указывающий, что это UUID версии 4
  • \(y\) — цифра варианта, ограниченная значениями 8, 9, a (A) или b (B)

UUID версии 4 строится из 128 случайных битов. Шесть из них не случайны: четыре бита кодируют версию (0100, то есть цифру 4), а два бита — вариант (10); именно поэтому 13-я шестнадцатеричная цифра всегда равна 4, а 17-я — всегда 8, 9, a или b. Остаётся \(122\) случайных битов, что даёт \(2^{122} \approx 5.3 \times 10^{36}\) возможных значений.

Генератор UUID — пример расчёта

Пример: сгенерируйте 5 UUID с настройками по умолчанию (Версия: v4, отмечен флажок верхнего регистра, дефисы сохранены). Типичный результат выглядит так:

\[ \\text{9F86D081-884C-4D15-9CE2-A1B2C3D4E5F6} \]

Обратите внимание на две фиксированные позиции: первая цифра третьей группы — 4 (версия), а первая цифра четвёртой группы — одна из 8, 9, A, B (вариант). Все остальные шестнадцатеричные символы случайны.

Результат: список из 5 UUID, по одному на строку, готовый к копированию — все они разные, но каждый соответствует структуре версии 4 стандарта RFC 4122.

Как пользоваться калькулятором

  1. Введите Количество UUID, которое вам нужно (любое значение от 1 до 100).
  2. Оставьте параметр Версия в значении v4 (случайная) — этот инструмент генерирует случайные идентификаторы версии 4.
  3. Отметьте или снимите флажок Верхний регистр (A–F) в зависимости от того, предпочитаете ли вы вывод в стиле 4F2A или 4f2a. Оба варианта корректны: шестнадцатеричная система нечувствительна к регистру.
  4. Отметьте Удалить дефисы, если хотите получать каждый UUID в виде простой строки из 32 символов (полезно для столбцов баз данных или кода, где дефисы нежелательны).
  5. Нажмите кнопку расчёта. В списке UUID отображается по одному идентификатору на строку, чтобы их было удобно копировать, а счётчик Сгенерировано подтверждает, сколько их создано.

Что такое UUID?

UUID (Universally Unique Identifier — универсальный уникальный идентификатор), в системах Windows также называемый GUID (Globally Unique Identifier — глобальный уникальный идентификатор), — это 128-битный идентификатор, спроектированный так, чтобы быть уникальным без какого-либо централизованного координирования. В отличие от автоинкрементных идентификаторов в базах данных, UUID можно генерировать независимо на разных серверах, устройствах или автономных клиентах, и коллизии практически невозможны: при 122 случайных битах на значение пришлось бы сгенерировать миллиарды UUID, прежде чем вероятность появления хотя бы одного дубликата стала бы заметной.

UUID записывается в виде 32 шестнадцатеричных цифр, сгруппированных по схеме 8-4-4-4-12 и разделённых дефисами, например 550e8400-e29b-41d4-a716-446655440000. Существует несколько версий. Версия 1 содержит метку времени и MAC-адрес машины; версии 3 и 5 получают идентификатор из имени с помощью хеширования MD5 или SHA-1; версия 4, которую создаёт этот инструмент, целиком строится из случайных чисел. Именно версия 4 сегодня используется шире всего, потому что она не раскрывает, когда и где идентификатор был создан.

Результат интерпретируется так: любая строка, соответствующая шаблону 8-4-4-4-12, с цифрой 4 в позиции версии и 8, 9, a или b в позиции варианта, является корректным UUID v4. Его можно напрямую использовать как первичный ключ, компонент API-токена, имя файла, идентификатор запроса или любой другой идентификатор, который никогда не должен повторяться.

Практические советы и ограничения

  • Качество случайности: генератор использует API crypto.getRandomValues() вашего браузера — криптографически стойкий источник случайных чисел. Обычный Math.random() не используется, за исключением очень старых браузеров.
  • Всё локально: UUID генерируются на вашем устройстве и никогда не отправляются на сервер, поэтому их безопасно использовать в чувствительных целях.
  • Регистр не имеет значения: 9F86... и 9f86... — один и тот же UUID. Выберите регистр, соответствующий стилю вашего проекта — во многих системах их хранят в нижнем регистре.
  • Это не пароль: UUID случаен, но его 122 бита структурированы для уникальности, а не для стойкости пароля. Для секретов используйте специальный генератор паролей.
  • Это не хеш: UUID идентифицирует, но не проверяет. Если вам нужен неизменный «отпечаток» данных, подойдёт хеш SHA-256 или хеш MD5 — одинаковые входные данные всегда дают одинаковый хеш, тогда как этот генератор каждый раз выдаёт новое значение.
  • Поддержка версий: сейчас поддерживается только версия 4; временные (v1) и основанные на имени (v3, v5) UUID здесь создать нельзя.

Поля версии и варианта UUID вкратце

Позиция в UUID Значение Смысл
Цифра 13 (первая цифра 3-й группы) 4 Версия 4 — сгенерирован случайным образом
Цифра 17 (первая цифра 4-й группы) 8, 9, a, b Вариант 10xx — стандартная структура RFC 4122
Все остальные цифры 0–9, a–f Полностью случайны

Если вместе с идентификаторами вам также нужно кодировать или передавать данные, вам поможет кодировщик Base64.

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

Как сгенерировать UUID v4 вручную или в собственном коде?

Возьмите 16 случайных байтов (128 бит), затем перезапишите два полубайта: установите старший полубайт 7-го байта (при отсчёте с 1) в 0100 для версии, а два старших бита 9-го байта — в 10 для варианта. Запишите байты в шестнадцатеричном виде с группировкой 8-4-4-4-12. В коде в большинстве языков есть встроенные средства, например crypto.randomUUID() в JavaScript или uuid.uuid4() в Python — ручная работа с битами не нужна.

Какова вероятность совпадения двух сгенерированных UUID?

При 122 случайных битах на UUID коллизия астрономически маловероятна при реалистичных объёмах. После генерации 1 миллиарда UUID вероятность появления хоть одного дубликата составляет около 1 к 100 миллиардам; при 103 триллионах UUID она достигает примерно 1 к миллиарду. В повседневных задачах — идентификаторы пользователей, номера заказов, API-ключи — UUID версии 4 можно считать уникальными без какой-либо централизованной проверки.

UUID и GUID — это одно и то же?

На практике — да. GUID (Globally Unique Identifier) — термин Microsoft, используемый в Windows, SQL Server и .NET, тогда как UUID происходит из стандарта RFC 4122. GUID, созданный функцией NEWID() в SQL Server или Guid.NewGuid() в .NET, — это UUID версии 4 того же формата 8-4-4-4-12, так что оба названия обозначают один и тот же идентификатор и взаимозаменяемы.

Почему 13-я цифра каждого UUID всегда 4, а 17-я — всегда 8, 9, a или b?

Эти позиции не случайны — они несут метаданные. 13-я шестнадцатеричная цифра кодирует версию (0100 в двоичном виде = 4), сообщая потребителям, что UUID построен из случайных чисел. 17-я цифра кодирует вариант (двоичное 10xx), что ограничивает её значениями 8, 9, a или b и указывает на стандартный формат RFC 4122 Лича–Сальца. Если любая из этих позиций отличается, строка не является корректным UUID v4.

Как проверить, является ли строка корректным UUID?

Сверьте её с шаблоном из 32 шестнадцатеричных цифр в группировке 8-4-4-4-12. Распространённое регулярное выражение: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ (нечувствительно к регистру). Чтобы проверить именно версию 4, дополнительно требуется 4 в начале третьей группы и 8, 9, a или b в начале четвёртой. Во многих языках есть готовые валидаторы, например uuid.UUID(value) в Python вызывает ошибку на некорректном вводе.

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

Да, и это популярное решение для распределённых систем, поскольку ключи можно создавать автономно без координации. Есть два компромисса: UUID занимают 16 байт в двоичном столбце (36 символов в текстовом) против 4–8 байт у целого числа, а случайные значения v4 фрагментируют B-tree-индексы, вызывая больше разделений страниц, чем последовательные ключи. По возможности храните их в нативном столбце UUID/binary, а для таблиц с интенсивной записью рассмотрите упорядоченные варианты UUID.

Почему некоторые UUID заключены в фигурные скобки или имеют префикс urn:uuid:?

Это лишь альтернативные текстовые представления, а не другие идентификаторы. Инструменты Microsoft часто выводят GUID как {550e8400-e29b-41d4-a716-446655440000}, а RFC также определяет форму URN: urn:uuid:550e8400-e29b-41d4-a716-446655440000. Скобки, префикс и дефисы — только оформление: удаляйте их перед хранением или сравнением, поскольку лежащие в основе 128 битов одинаковы в любом формате.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *