UUID Декодер & Валидатор: Анализ на версии (v1, v4, v7)

Въведете вашето UUID в полето по-горе и този инструмент (UUID Parser) незабавно ще извърши онлайн проверка, ще определи версията, валидността и ще извлече скритата информация.

Какво е UUID Декодер?

UUID Декодерът е инструмент, който анализира UUID (Универсален Уникален Идентификатор) и извлича цялата налична информация от него. UUID не е просто случайна поредица от знаци – в зависимост от версията, то може да съдържа времеви маркер, системна информация или хеш на детерминирани данни.

Каква информация можете да получите от UUID?

Основна информация за UUID

Версия на UUID:

  • Определя типа и структурата на UUID (v1, v3, v4, v5, v6, v7)
  • Извлечено от 13-ия шестнадесетичен знак

Вариант:

  • RFC 4122 - Стандартен UUID вариант
  • NCS - Network Computing System (остарял)
  • Microsoft - Microsoft GUID вариант
  • Reserved - Резервирано за бъдеща употреба

UUID v1 - Времеви маркер + MAC адрес

Какво можете да получите:

  • Точно време на създаване - дата и час с точност до 100 наносекунди
  • Последователност на часовника - пореден номер за предотвратяване на колизии
  • ID на възел - първоначално MAC адрес, често случайни стойности

Пример:

UUID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8

Версия: v1 (Времеви маркер + MAC)
Вариант: RFC 4122
Дата и час: 15.10.1997 04:25:33.000
Последователност на часовника: 724
ID на възел: 00:C0:4F:D4:30:C8

Употреба:

  • Определяне кога е създаден записът
  • Одит и съдебномедицински анализ
  • Отстраняване на грешки, зависещи от времето

UUID v3/v5 - Базирано на хеш

Какво можете да получите:

  • Тип на хеша - MD5 (v3) или SHA-1 (v5)
  • Не може да се получи - първоначалното пространство от имена (namespace) и име (еднопосочен хеш)

Пример:

UUID: 886313e1-3b8a-5372-9b90-0c9aee199e5d

Версия: v5 (SHA-1 хеш)
Вариант: RFC 4122
Тип: UUID базирано на хеш (детерминистично)
Забележка: Първоначалното пространство от имена (namespace) и име не могат да бъдат възстановени от UUID

Употреба:

  • Проверка, че UUID е детерминистично
  • Идентифициране на типа UUID в база данни
  • Проверка на съгласуваността на идентификатори, базирани на хеш

UUID v4 - Случайно

Какво можете да получите:

  • Версия - потвърждение, че е случайно
  • Вариант - стандарт RFC 4122
  • Няма допълнителни данни - чисто случайни битове

Пример:

UUID: f47ac10b-58cc-4372-a567-0e02b2c3d479

Версия: v4 (Случайно)
Вариант: RFC 4122
Тип: Случайно генерирано UUID

Употреба:

  • Проверка, че UUID е случайно (не детерминистично)
  • Проверка на правилния формат на UUID
  • Валидация на UUID преди запис в база данни

UUID v6 - Подреден времеви маркер

Какво можете да получите:

  • Точно време на създаване - пренаредено за по-добра производителност на БД
  • Последователност на часовника - пореден номер
  • ID на възел - идентификатор на възел

Пример:

UUID: 1ec9414c-232a-6b00-b3c8-9e6bdeced846

Версия: v6 (Подреден времеви маркер)
Вариант: RFC 4122
Дата и час: 30.01.2026 14:23:45.123
Последователност на часовника: 3272
ID на възел: 9E:6B:DE:CE:D8:46

Употреба:

  • Определяне на времето на създаване на записа
  • Анализ на хронологичното сортиране в БД
  • Отстраняване на грешки в разпределени системи

UUID v7 - Unix времеви маркер

Какво можете да получите:

  • Unix времеви маркер - милисекунди от 1.1.1970
  • Дата и час - стандартен формат на Unix времеви маркер
  • Случайна част - не може да бъде декодирана

Пример:

UUID: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f

Версия: v7 (Unix времеви маркер)
Вариант: RFC 4122
Дата и час: 30.01.2026 14:23:45.123

Употреба:

  • Получаване на времето на създаване на модерни UUID
  • Анализ на времевото сортиране
  • Миграция на данни с времеви отметки

Структура на UUID

UUID е във формат: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

6ba7b810-9dad-11d1-80b4-00c04fd430c8
│      │ │  │ │  │ │  │ │           │
│      │ │  │ │  │ │  │ └───────────┴─ Възел (48 бита)
│      │ │  │ │  │ └──┴─────────────── Последователност на часовника (14 бита)
│      │ │  │ └──┴────────────────────── Вариант (2-3 бита)
│      │ └──┴───────────────────────────── Версия (4 бита) + Висока част на времето
│      └──────────────────────────────────── Средна част на времето (16 бита)
└─────────────────────────────────────────── Ниска част на времето (32 бита)

Извличане на версии и варианти

Версия (M):

  • Позиция: 13-и шестнадесетичен знак
  • Стойности: 1-7 (различни версии на UUID)

Вариант (N):

  • Позиция: 17-и шестнадесетичен знак
  • 0-7: NCS (Резервирано)
  • 8-B: RFC 4122 (стандарт)
  • C-D: Microsoft
  • E-F: Бъдеще (Резервирано)

Практически примери

Отстраняване на грешки - Откриване на времето на създаване на запис

Сценарий: Потребител съобщава, че данните му са изчезнали. Трябва да разберете кога е създаден записът.

UUID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Декодирано: 15.10.1997 04:25:33.000

→ Записът е създаден през 1997 г.

Съдебномедицински анализ - Проверка на времевата последователност

Сценарий: Проверка дали събитията са се случили в правилния ред.

UUID 1: 1ec9414c-232a-6b00-b3c8-9e6bdeced846 → 30.01.2026 14:23:45
UUID 2: 1ec9414d-557b-6a00-8f32-1234567890ab → 30.01.2026 14:25:12

→ UUID 2 е създадено по-късно (правилен ред)

Идентифициране на типа UUID в база данни

Сценарий: Имате смесени UUID в БД и трябва да знаете кои са случайни и кои имат времеви маркер.

f47ac10b-58cc-4372-a567-0e02b2c3d479 → v4 (случайно, без времеви маркер)
6ba7b810-9dad-11d1-80b4-00c04fd430c8 → v1 (има времеви маркер)
017f22e2-79b0-7cc3-98c4-dc0c0c07398f → v7 (има времеви маркер)

→ Само v1 и v7 UUID съдържат информация за времето

Ограничения и какво не може да бъде получено

❌ UUID v3/v5 - Хешът не може да бъде декодиран

Невъзможно:

  • Възстановяване на първоначалното пространство от имена (namespace)
  • Възстановяване на първоначалното име/стойност
  • Откриване кои данни са били хеширани

Причина: MD5 и SHA-1 са еднопосочни хеширащи функции.

❌ UUID v4 - Няма скрити данни

Невъзможно:

  • Получаване на каквито и да е метаданни
  • Откриване на времето на създаване
  • Идентифициране на източника

Причина: UUID v4 е чисто случайно и не съдържа структурирана информация.

⚠️ UUID v1/v6 - ID на възел може да е случайно

Ограничения:

  • В модерните реализации Node ID често е случайно (не е действителен MAC адрес)
  • Заради защита на личните данни, MAC адресите често се заместват със случайни стойности
  • Не може надеждно да се идентифицира конкретна машина

Валидация на UUID

Декодерът функционира и като UUID валидатор.

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

Декодерът автоматично валидира:

  • ✅ Правилен формат (8-4-4-4-12 шестнадесетични знака)
  • ✅ Валидни шестнадесетични знаци (0-9, a-f)
  • ✅ Правилна дължина (36 знака с тирета, 32 без)

Разпознаване на невалидни UUID

Невалидни примери:

❌ 6ba7b810-9dad-11d1-80b4          (твърде кратък)
❌ 6ba7b810-9dad-11d1-80b4-GHIJKLMN (невалидни знаци)
❌ 6ba7b81-09dad-11d1-80b4-00c04fd4 (грешен формат)

За разработчици

Имплементация на JavaScript

// Извличане на версията от UUID
function getUUIDVersion(uuid) {
    const cleaned = uuid.replace(/-/g, '');
    return parseInt(cleaned[12], 16);
}

// Извличане на времеви маркер от UUID v7
function extractV7Timestamp(uuid) {
    const cleaned = uuid.replace(/-/g, '');
    const timeHi = parseInt(cleaned.substring(0, 8), 16);
    const timeLow = parseInt(cleaned.substring(8, 12), 16);
    const unixMs = Number(BigInt("0x" + cleaned.substring(0, 12)) >> 16n);
    return new Date(unixMs);
}

// Пример
const uuid = '017f22e2-79b0-7cc3-98c4-dc0c0c07398f';
console.log(getUUIDVersion(uuid)); // 7
console.log(extractV7Timestamp(uuid)); // Date object

Валидация на UUID с помощта на регулярен израз

const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;

function isValidUUID(uuid) {
    return uuidRegex.test(uuid);
}

Често задавани въпроси (ЧЗВ)

Мога ли да получа времето на създаване от UUID v4? Не, UUID v4 е чисто случайно и не съдържа никаква информация за време. За UUID с време използвайте v1, v6 или v7.
Защо ID на възел в UUID v1 е случайно вместо MAC адрес? Съвременните реализации използват случайно Node ID поради защита на личните данни. Разкриването на действителен MAC адрес може да представлява риск за сигурността.
Мога ли да възстановя оригиналния URL адрес или име от UUID v5? Не, UUID v5 използва SHA-1 хеш, който е еднопосочен. От хеша не могат да бъдат възстановени първоначалните данни.
Как да разбера, че UUID е случайно (v4)? Декодерът ще покаже версията на UUID. Ако версията е 4, това е случайно генерирано UUID без допълнителни метаданни.
Точен ли е времевият маркер в UUID v1? Да, UUID v1 има теоретична точност от 100 наносекунди (от 15 октомври 1582 г.). На практика зависи от точността на системния часовник.
Мога ли да използвам декодера за валидация на UUID? Да, декодерът автоматично валидира формата на UUID и ще покаже грешка, ако UUID е невалиден.

Сигурност и поверителност

Какво разкрива UUID?

UUID v1/v6:

  • ⚠️ Време на създаване - може да разкрие времето на операциите
  • ⚠️ Потенциално MAC адрес - риск от идентификация на устройство (в модерните реализации случайно)

UUID v4:

  • Безопасно - не съдържа метаданни

UUID v7:

  • ⚠️ Unix времеви маркер - разкрива времето на създаване

Препоръки

  • ✅ Използвайте UUID v4 за максимална поверителност
  • ⚠️ Бъдете внимателни с UUID v1/v6/v7 в публични API (разкриват времева информация)
  • ✅ UUID v5 е детерминистично, но не разкрива първоначални данни
  • ⚠️ MD5 хешът не е напълно сигурен

Любопитни факти

  • Най-старото възможно UUID v1: 15 октомври 1582 г. 00:00:00 (началото на григорианския календар)
  • Най-новото UUID v7: 10889-08-02 05:31:50.655 (лимит на Unix времеви маркер в ms)
  • Точност на UUID v1: 100 наносекунди (теоретично 10 милиона UUID в секунда)
  • UUID Nil: 00000000-0000-0000-0000-000000000000 (специално „празно“ UUID)
  • UUID Max: ffffffff-ffff-ffff-ffff-ffffffffffff (максимална стойност)

Употреба в различни системи

PostgreSQL

-- Извличане на версията на UUID
SELECT substring(id::text, 15, 1) as version
FROM users;

-- Филтриране по версия
SELECT *
FROM users
WHERE substring(id::text, 15, 1) = '4';

MySQL

-- Проверка на формата на UUID
SELECT id
FROM users
WHERE id REGEXP '^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$';