Генератор UUID
Онлайн-генератор UUID (GUID) версий 1, 3, 4, 5, 6 и 7: выберите версию и скопируйте готовый идентификатор.
Автор: Андрей Яценко
Что такое UUID
UUID (Universally Unique Identifier, он же GUID) — 128-битный идентификатор, который можно создать на любой машине без обращения к общему серверу и не бояться повторов. Записывают его как 32 шестнадцатеричные цифры, разбитые дефисами на группы 8-4-4-4-12, например 01a0c4a6-1b5b-7167-be98-80bd2d17bc83.
Первая цифра третьей группы — номер версии (здесь 7), первая цифра четвёртой группы — вариант, у обычных UUID это 8, 9, a или b. Формат описывает RFC 9562, который заменил RFC 4122 и добавил версии 6, 7 и 8.
Версии UUID
- v1 — время с точностью 100 нс от 15 октября 1582 года плюс идентификатор узла. Браузер не отдаёт MAC-адрес, поэтому узел случайный и одинаков для всех значений на странице.
- v3 — MD5 от пространства имён и имени. Оставлена ради совместимости.
- v4 — 122 случайных бита. Самая распространённая версия.
- v5 — то же, что v3, но на SHA-1. Лучший выбор, когда идентификатор должен вычисляться из имени.
- v6 — v1 с переставленными битами времени: значения сортируются по времени создания.
- v7 — 48 бит времени в миллисекундах от 1 января 1970 года, счётчик и случайные биты. Сортируется по времени и хорошо подходит для ключей в базе.
Частые вопросы
Какую версию UUID выбрать?
Для первичных ключей в базе данных берите v7: значения растут со временем, и индекс не разрастается так, как со случайными v4. Если нужен просто уникальный или непредсказуемый идентификатор без привязки ко времени — v4. Если идентификатор должен вычисляться из имени и одинаково получаться в любой системе — v5. Версии v1 и v6 нужны для совместимости с системами, которые ждут метку времени в старом формате, а v3 — для старых систем, где применяется MD5.
Могут ли два UUID совпасть?
Теоретически да, практически нет. В UUID v4 122 случайных бита: чтобы вероятность хотя бы одного совпадения достигла 50%, нужно создать около 2,7·10¹⁸ значений. У v7 значения различаются по времени, а внутри одной миллисекунды — по счётчику и случайным битам, поэтому подряд созданные UUID не повторяются и возрастают.
Можно ли использовать UUID как токен или пароль?
Только v4, и лишь там, где хватает 122 бит случайности: он создаётся через crypto.getRandomValues и не поддаётся угадыванию. v1, v6 и v7 содержат время создания, а v3 и v5 вычисляются из введённых данных, поэтому как секрет они не подходят. Для паролей лучше воспользоваться генератором паролей.
Почему v3 и v5 всегда дают один и тот же UUID?
Они не случайные, а вычисляются: MD5 (v3) или SHA-1 (v5) от пространства имён и имени. Одинаковая пара «пространство имён + имя» даёт одинаковый результат в любом языке и на любом сервере, поэтому кнопки «Обновить» у этих версий нет. Чтобы получить другой UUID, измените имя или пространство имён.