Генератор UUID

RSS

Генерируйте криптографически случайные UUID версии 4 или упорядоченные по времени UUID версии 7 — по одному или списком.

Работает на 100% в вашем браузере. Ничего из вставленного не загружается на сервер и не сохраняется.

Как пользоваться генератором UUID

  1. Выберите версию: v4 (случайная) или v7 (упорядоченная по времени).
  2. Укажите, сколько UUID вам нужно: от одного до целого списка.
  3. При желании переключитесь на верхний регистр или уберите дефисы.
  4. Скопируйте одно значение или весь список.

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

Что такое UUID?

UUID (Universally Unique Identifier, универсальный уникальный идентификатор) — это 128-битное значение, которое можно независимо создать на любом компьютере с ничтожно малой вероятностью совпадения с каким-либо другим. Не нужен ни центральный реестр, ни обращение к базе данных, поэтому UUID идеально подходят для распределённых систем, офлайн-клиентов и объединения данных из нескольких источников. Их также часто используют как идентификаторы запросов и для поля jti в токенах, которые можно изучить в декодере JWT. GUID (Globally Unique Identifier) — так Microsoft называет то же самое.

UUID записывается как 32 шестнадцатеричные цифры в пяти группах, разделённых дефисами, по схеме 8-4-4-4-12 (всего 36 символов):

f47ac10b-58cc-4372-a567-0e02b2c3d479
              ^    ^
              |    вариант (8, 9, a или b)
              версия (4)

Первая цифра третьей группы — это версия; первая цифра четвёртой группы кодирует вариант. Действующая спецификация — RFC 9562 (2024), которая заменила RFC 4122 и добавила версии 6, 7 и 8.

Версия 4 или версия 7

UUID v4UUID v7
Содержимое122 случайных бита (6 бит зафиксированы под версию и вариант)48-битная метка времени Unix в миллисекундах, затем случайные биты
Порядок сортировкиСлучайныйПримерно хронологический
Что раскрываетНичегоВремя своего создания
Лучше всего подходит дляТокенов, публичных идентификаторов, общего использованияПервичных ключей баз данных, журналов событий

Почему v7 лучше для индексов базы данных

Первичные ключи обычно хранятся в индексе B-tree. Случайные значения v4 попадают в случайные места, поэтому каждая вставка затрагивает другую страницу, что приводит к разделению страниц, плохой локальности кеша и разрастанию индекса на больших таблицах. Так как UUID v7 начинаются с метки времени, новые значения добавляются ближе к концу индекса, почти как автоинкрементное целое число, при этом сохраняются преимущества глобально уникальных идентификаторов, создаваемых на клиенте.

Типичные ошибки

  • Хранение UUID в виде текста. Строка из 36 символов занимает более чем вдвое больше места, чем те же 16 байт в двоичном виде. Используйте встроенный тип uuid (PostgreSQL) или BINARY(16) (MySQL).
  • Использование UUID как секретов. Значения v4 трудно угадать, но это идентификаторы, а не учётные данные. Значения v7 раскрывают время создания и частично предсказуемы. Для сброса пароля и ключей API используйте отдельный случайный токен.
  • Сравнение с учётом регистра. RFC 9562 предписывает выводить значения строчными буквами, но требует принимать ввод в любом регистре. Нормализуйте строки перед сравнением.
  • Слабые источники случайности. Создание UUID v4 с помощью Math.random() подрывает их уникальность. Используйте криптографически стойкий генератор.

Как создать UUID в коде

// JavaScript (браузеры и Node.js)
crypto.randomUUID();                 // v4

# Python
import uuid
uuid.uuid4()
uuid.uuid7()                         # Python 3.14+

-- PostgreSQL
SELECT gen_random_uuid();            -- v4 (PostgreSQL 13+)
SELECT uuidv7();                     -- PostgreSQL 18+

// Java
java.util.UUID.randomUUID();

// C# / .NET
Guid.NewGuid();                      // v4
Guid.CreateVersion7();               // .NET 9+

# Shell (Linux, macOS)
uuidgen
Совет: нужна метка времени из UUID v7? Первые 12 шестнадцатеричных цифр (без дефисов) — это время Unix в миллисекундах. Переведите их из шестнадцатеричной системы в десятичную и вставьте результат в конвертер Unix-времени.

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

Могут ли два UUID когда-нибудь совпасть?

Теоретически да, на практике нет. При 122 случайных битах число возможных значений v4 настолько велико, что пришлось бы создавать миллиарды UUID каждую секунду на протяжении многих десятилетий, прежде чем хотя бы один дубликат стал вероятным. Совпадения в реальных системах почти всегда возникают из-за неисправного генератора случайных чисел или скопированных данных, а не случайно.

Чем UUID отличается от GUID?

На практике ничем. GUID — это термин, используемый в технологиях Microsoft; формат и размер те же.

Что использовать: v4 или v7?

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

Допустим ли нулевой UUID?

Да. 00000000-0000-0000-0000-000000000000 — это специальный нулевой (nil) UUID, а RFC 9562 также определяет максимальный (max) UUID, состоящий из одних цифр f. Оба часто используются как заполнители.

Обновлено

Комментарии

Оценок пока нет

Войдите, чтобы оценить этот инструмент.

Поделитесь советом, задайте вопрос или расскажите, как вам помог инструмент.

Комментариев пока нет. Расскажите первым, как всё прошло.

Скопировано в буфер обмена