Что такое UUID
UUID — это универсальный уникальный идентификатор, длинный номер, который программа присваивает объекту: заказу, файлу, записи в базе, диску или сеансу входа. Его главное свойство в том, что такой номер можно создать на любом компьютере без общего реестра и без проверки по списку уже выданных, и он всё равно не совпадёт с чужим.
Выглядит UUID так:
3f2b8c1e-9d4a-4c7b-a1e2-5f6d7c8b9a0e
Это 32 символа из цифр и букв от a до f, разделённые дефисами на пять групп: 8, 4, 4, 4 и 12 знаков. Всего с дефисами 36 символов. Обычный порядковый номер вроде «заказ 1045» выдаёт одна система по очереди. UUID нужен там, где номера создают одновременно многие устройства и серверы, а договориться между собой о следующем свободном числе они не могут.
Где встречается UUID
Чаще всего UUID работает незаметно, но иногда его приходится скопировать, найти или ввести вручную:
| Где встретился | Что он обозначает |
|---|---|
| Адрес страницы, номер заказа или обращения | Конкретную запись в сервисе: документ, заказ, ссылку на файл |
| Токен для работы с Честным знаком | Сеанс входа в систему маркировки. Система переходит на токены в формате UUID, прежний формат поддерживается до 31 декабря 2026 года |
| Сообщения и отчёты в электронном документообороте, 1С | Номер конкретного сообщения или документа, по которому система ищет ответ |
| Диски и разделы в Linux | Раздел диска. По UUID система находит нужный раздел, даже если диск подключили в другой разъём |
| Настройки BIOS и сведения о компьютере | Сам компьютер. Номер записывает производитель, по нему компьютер различают программы учёта и лицензирования |
| Minecraft | Аккаунт игрока. Номер остаётся прежним, даже если игрок сменит ник |
Сообщение вроде «в запросе отсутствует идентификатор» или «сообщение с указанным UUID не найдено» значит, что программа не нашла объект по этому номеру: идентификатор не передан, скопирован не полностью или относится к другой учётной записи. Сам формат UUID тут ни при чём, искать причину нужно в настройках программы или сервиса.
Из чего состоит запись
Внутри UUID — число длиной 128 бит, то есть 16 байт. В тексте его записывают шестнадцатеричными цифрами: каждый знак от 0 до f кодирует 4 бита. Поэтому других букв, кроме a–f, в UUID не бывает. Если в номере встретилась буква g или o, это опечатка.
Две позиции в записи служебные, по ним можно понять, как номер создан:
xxxxxxxx-xxxx-4xxx-axxx-xxxxxxxxxxxx
- Первая цифра третьей группы — версия. В примере из начала статьи там стоит
4: это UUID версии 4, случайный. Цифра7на этом месте означает версию 7 и так далее. - Первый знак четвёртой группы — вариант. У современных UUID это
8,9,aилиb. Другие значения встречаются у очень старых идентификаторов и у особых номеров.
Остальные знаки зависят от версии: в одних это случайное число, в других время создания. Особый номер из одних нулей 00000000-0000-0000-0000-000000000000 называется нулевым UUID. Программы обычно используют его как «идентификатор не задан», поэтому в настоящей записи он чаще говорит об ошибке, чем о реальном объекте.
Версии UUID: чем отличаются v4 и v7
Действующий стандарт RFC 9562 вышел в 2024 году и заменил прежний RFC 4122. Он описывает восемь версий. На практике выбирают между тремя-четырьмя:
| Версия | Что внутри | Когда используют |
|---|---|---|
| v1, v6 | Время создания и номер устройства: MAC-адрес сетевой карты или случайное число | В старых системах. Для новых стандарт советует v7 |
| v3, v5 | Хеш от имени: адреса сайта, ника, пути к файлу | Когда из одного и того же имени всегда нужен один и тот же номер. v5 предпочтительнее v3 |
| v4 | 122 случайных бита | Самый распространённый вариант по умолчанию: заказы, файлы, токены, тестовые данные |
| v7 | Время создания с точностью до миллисекунды и случайная часть | Ключи записей в базах данных: новые номера идут по порядку, и базе проще их хранить и искать |
| v8 | Формат, который задаёт разработчик | Особые задачи, когда стандартные версии не подходят |
| v2 | Служебный формат старых систем безопасности | Сейчас практически не встречается |
Если нужен просто уникальный номер, берите v4. Если номера станут ключами в большой таблице базы данных, лучше v7: случайные v4 разбрасывают новые записи по всему индексу, а v7 добавляет их в конец, как обычный счётчик. Обратная сторона v7 в том, что по номеру можно узнать время его создания. Если время создания записи нельзя раскрывать, остаётся v4.
UUID и GUID: есть ли разница
GUID — название того же 128-битного идентификатора в продуктах Microsoft: Windows, .NET, SQL Server. Стандарт прямо называет GUID другим именем UUID, поэтому в текстовом виде разницы нет. Отличия встречаются только в оформлении:
- Windows часто показывает GUID в фигурных скобках и заглавными буквами:
{3F2B8C1E-9D4A-4C7B-A1E2-5F6D7C8B9A0E}. Это тот же номер, что и3f2b8c1e-9d4a-4c7b-a1e2-5f6d7c8b9a0e. - В двоичном виде некоторые программы Microsoft хранят первые три группы байтов в обратном порядке. Это важно, только если вы переносите идентификаторы между базами данных побайтно, а не текстом.
Слово GUID встречается и в разметке дисков: GPT расшифровывается как GUID Partition Table. Каждый раздел такого диска получает свой GUID, отсюда и название.
Может ли UUID совпасть
Теоретически может, на практике шанс ничтожен. У UUID v4 случайная часть даёт около 5×1036 вариантов. Чтобы вероятность хотя бы одного совпадения достигла одного шанса на миллиард, нужно создать примерно 103 триллиона идентификаторов. Если выпускать миллиард UUID в секунду, шанс встретить одну пару станет «пятьдесят на пятьдесят» лишь через 86 лет. Растёт он так быстро из-за того же эффекта, что и в парадоксе дней рождения, но даже с ним числа остаются огромными.
Когда UUID всё-таки повторяются, виновата почти всегда ошибка, а не случайность:
- номер скопировали из примера, документации или тестовых данных вместо того, чтобы создать новый;
- программа создаёт номера простым генератором случайных чисел, который после перезапуска выдаёт ту же последовательность;
- v1 создавали на виртуальных машинах, склонированных из одного образа, с одинаковым номером устройства.
Поэтому в базах данных уникальность всё равно проверяют ограничением UNIQUE или первичным ключом. Стандарт тоже советует заранее оценить, чем обернётся совпадение: повтор в журнале событий почти безвреден, а в платёжной записи — нет.
Можно ли использовать UUID как пароль или секретную ссылку
Нельзя полагаться на то, что UUID невозможно угадать. Стандарт прямо говорит, что UUID не стоит считать трудноугадываемыми и нельзя давать доступ только за то, что человек знает номер. Причины разные:
- v1, v6 и v7 содержат время создания: соседние номера похожи, и их легче подобрать;
- v3 и v5 вычисляются из имени: зная имя, номер получит кто угодно;
- v4 надёжен лишь настолько, насколько надёжен генератор случайных чисел в конкретной программе, а снаружи этого не проверить.
При этом сервисы иногда выдают случайный UUID как токен входа, так делает и Честный знак. Это работает, потому что токен создаёт сам сервер, он действует ограниченное время и привязан к сеансу. Обращайтесь с таким токеном как с паролем: не пересылайте его и не публикуйте в скриншотах.
Если нужен секрет, который вы будете хранить и вводить сами, используйте пароль. Его можно создать в генераторе паролей, а о длине и составе подробно рассказано в статье «Как придумать надёжный пароль».
Как узнать UUID компьютера и диска
| Что ищем | Как посмотреть |
|---|---|
| UUID компьютера в Windows | В PowerShell: Get-CimInstance Win32_ComputerSystemProduct | Select-Object UUID |
| UUID компьютера в Linux | sudo cat /sys/class/dmi/id/product_uuid |
| UUID Mac | Удерживая Option, откройте меню Apple → «Информация о системе», строка «UUID оборудования» |
| UUID разделов диска в Linux | lsblk -f или sudo blkid |
UUID компьютера записан производителем в таблицы SMBIOS и не меняется при переустановке системы. У дешёвых материнских плат и самосборных компьютеров он иногда бывает пустым или одинаковым у целой партии: тогда программа, которая отличает компьютеры по UUID, может принять два устройства за одно.
У разделов в Linux может быть два номера. UUID принадлежит файловой системе, его чаще всего указывают в /etc/fstab, чтобы раздел подключался при загрузке. PARTUUID принадлежит самому разделу в таблице GPT. После форматирования раздела UUID файловой системы меняется, поэтому старая строка в /etc/fstab перестаёт работать, и номер нужно обновить.
Как создать UUID
Для одного номера или списка не нужно ничего устанавливать: сгенерируйте UUID v4 онлайн, а затем скопируйте список или скачайте его файлом TXT. В программах и скриптах UUID создают встроенными средствами:
| Где | UUID v4 | UUID v7 |
|---|---|---|
| JavaScript в браузере и Node.js | crypto.randomUUID() | Нет встроенной функции |
| Python | uuid.uuid4() | uuid.uuid7(), с версии 3.14 |
| PostgreSQL | gen_random_uuid() | uuidv7(), с версии 18 |
| Терминал Linux | uuidgen | uuidgen --time-v7, в свежих версиях util-linux |
| Терминал macOS | uuidgen | Нет встроенной команды |
| PowerShell в Windows | New-Guid | [guid]::CreateVersion7(), в PowerShell 7.5 и новее |
В браузере crypto.randomUUID() работает только на страницах, открытых по HTTPS или с локального адреса. В базе данных храните UUID в специальном типе uuid, а не текстом: так номер занимает 16 байт вместо 36 символов, и стандарт рекомендует именно такое хранение.
Частые вопросы
Можно ли записывать UUID без дефисов или заглавными буквами?
Это тот же номер: регистр букв по стандарту значения не имеет, а дефисы только разделяют группы. Но конкретная программа может принимать лишь одну запись, обычно строчными буквами с дефисами. Если номер не принимается, приведите его к этому виду и уберите фигурные скобки.
Почему скопированный UUID не принимается, хотя выглядит правильно?
Частые причины: при копировании пропал символ или попал пробел, перенос строки, кавычка. Ещё одна ловушка — русские буквы «а», «с» или «е» вместо латинских a, c и e: на вид они не отличаются. Проверьте длину, должно быть 36 символов с дефисами, и найдите русские буквы в строке.
Что такое UUID в Minecraft?
Это постоянный номер аккаунта Java Edition. Он создаётся при регистрации и не меняется при смене ника, поэтому серверы хранят по нему права и прогресс игрока. На серверах без проверки лицензии UUID вычисляется из ника, и после смены ника игрок получает новый номер. Генератор случайных UUID не подходит: он создаёт новые номера, а не находит существующий.












