Decodor și Validator UUID | Analiza versiunilor (v1, v4, v7) și a timpului

Introduceți UUID-ul dumneavoastră în câmpul de mai sus, iar acest instrument (UUID Parser) va efectua imediat o verificare online, va determina versiunea, validitatea și va extrage informațiile ascunse.

Ce este un Decodor UUID?

Un Decodor UUID este un instrument care analizează un UUID (Universally Unique Identifier) și extrage toate informațiile disponibile din acesta. Un UUID nu este doar un șir aleatoriu de caractere – în funcție de versiune, poate conține un marcaj temporal, informații despre sistem sau un hash de date deterministice.

Ce informații puteți obține dintr-un UUID?

Informații de bază despre UUID

Versiunea UUID:

  • Determină tipul și structura UUID (v1, v3, v4, v5, v6, v7)
  • Extras din al 13-lea caracter hexazecimal

Variantă:

  • RFC 4122 - Varianta standard UUID
  • NCS - Network Computing System (învechit)
  • Microsoft - Varianta Microsoft GUID
  • Reserved - Rezervat pentru utilizări viitoare

UUID v1 - Marcaj temporal + adresă MAC

Ce puteți obține:

  • Ora exactă a creării - data și ora cu o precizie de 100 nanosecunde
  • Secvența ceasului - număr secvențial pentru prevenirea coliziunilor
  • ID nod - inițial o adresă MAC, adesea valori aleatorii

Exemplu:

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

Versiune: v1 (Marcaj temporal + MAC)
Variantă: RFC 4122
Data și ora: 15.10.1997 04:25:33.000
Secvența ceasului: 724
ID nod: 00:C0:4F:D4:30:C8

Utilizare:

  • Determinarea momentului creării unei înregistrări
  • Audit și analiză forensică
  • Depanarea problemelor dependente de timp

UUID v3/v5 - Bazat pe hash

Ce puteți obține:

  • Tipul hash-ului - MD5 (v3) sau SHA-1 (v5)
  • Nu se poate obține - namespace-ul și numele originale (hash unidirecțional)

Exemplu:

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

Versiune: v5 (Hash SHA-1)
Variantă: RFC 4122
Tip: UUID bazat pe hash (determinist)
Notă: Namespace-ul și numele original nu pot fi recuperate din UUID

Utilizare:

  • Verificarea faptului că UUID este determinist
  • Identificarea tipului UUID într-o bază de date
  • Verificarea consistenței identificatorilor bazați pe hash

UUID v4 - Aleatoriu

Ce puteți obține:

  • Versiune - confirmarea că este aleatoriu
  • Variantă - standardul RFC 4122
  • Nu există alte date - biți pur aleatorii

Exemplu:

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

Versiune: v4 (Aleatoriu)
Variantă: RFC 4122
Tip: UUID generat aleatoriu

Utilizare:

  • Verificarea faptului că UUID este aleatoriu (nu determinist)
  • Verificarea formatului corect al UUID
  • Validarea UUID înainte de stocarea în baza de date

UUID v6 - Marcaj temporal ordonat

Ce puteți obține:

  • Ora exactă a creării - rearanjat pentru o performanță mai bună a bazei de date
  • Secvența ceasului - număr secvențial
  • ID nod - identificator de nod

Exemplu:

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

Versiune: v6 (Marcaj temporal ordonat)
Variantă: RFC 4122
Data și ora: 30.01.2026 14:23:45.123
Secvența ceasului: 3272
ID nod: 9E:6B:DE:CE:D8:46

Utilizare:

  • Determinarea orei de creare a înregistrării
  • Analiza sortării cronologice în baza de date
  • Depanarea sistemelor distribuite

UUID v7 - Marcaj temporal Unix

Ce puteți obține:

  • Marcaj temporal Unix - milisecunde de la 1.1.1970
  • Data și ora - format standard de marcaj temporal Unix
  • Parte aleatorie - nu poate fi decodificată

Exemplu:

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

Versiune: v7 (Marcaj temporal Unix)
Variantă: RFC 4122
Data și ora: 30.01.2026 14:23:45.123

Utilizare:

  • Obținerea timpului de creare a UUID-urilor moderne
  • Analiza ordonării temporale
  • Migrarea datelor cu marcaje temporale

Structura UUID

Un UUID are formatul: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

6ba7b810-9dad-11d1-80b4-00c04fd430c8
│      │ │  │ │  │ │  │ └───────────┴─ Nod (48 biți)
│      │ │  │ │  │ └──┴─────────────── Secvența ceasului (14 biți)
│      │ │  │ └──┴────────────────────── Variantă (2-3 biți)
│      │ └──┴───────────────────────────── Versiune (4 biți) + Time High
│      └──────────────────────────────────── Time Mid (16 biți)
└─────────────────────────────────────────── Time Low (32 biți)

Extracția versiunilor și variantelor

Versiune (M):

  • Poziție: al 13-lea caracter hexazecimal
  • Valori: 1-7 (diferite versiuni UUID)

Variantă (N):

  • Poziție: al 17-lea caracter hexazecimal
  • 0-7: NCS (Rezervat)
  • 8-B: RFC 4122 (standard)
  • C-D: Microsoft
  • E-F: Viitor (Rezervat)

Exemple practice

Depanare - Determinarea orei de creare a unei înregistrări

Scenariu: Un utilizator raportează că datele sale au dispărut. Trebuie să aflați când a fost creată înregistrarea.

UUID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Decodificat: 15.10.1997 04:25:33.000

→ Înregistrarea a fost creată în anul 1997

Analiză forensică - Verificarea secvenței temporale

Scenariu: Verificarea dacă evenimentele au avut loc în ordinea corectă.

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 a fost creat mai târziu (ordine corectă)

Identificarea tipului de UUID într-o bază de date

Scenariu: Aveți UUID-uri mixte într-o bază de date și trebuie să știți care sunt aleatorii și care au marcaj temporal.

f47ac10b-58cc-4372-a567-0e02b2c3d479 → v4 (aleatoriu, fără marcaj temporal)
6ba7b810-9dad-11d1-80b4-00c04fd430c8 → v1 (are marcaj temporal)
017f22e2-79b0-7cc3-98c4-dc0c0c07398f → v7 (are marcaj temporal)

→ Doar UUID-urile v1 și v7 conțin informații temporale

Limitări și ce nu se poate obține

❌ UUID v3/v5 - Hash-ul nu poate fi decodificat

Imposibil:

  • Recuperarea namespace-ului original
  • Recuperarea numelui/valorii originale
  • Aflarea datelor care au fost hash-uite

Motiv: MD5 și SHA-1 sunt funcții de hash unidirecționale.

❌ UUID v4 - Fără date ascunse

Imposibil:

  • Obținerea oricăror metadate
  • Aflarea timpului de creare
  • Identificarea sursei

Motiv: UUID v4 este pur aleatoriu, nu conține informații structurate.

⚠️ UUID v1/v6 - ID-ul nodului poate fi aleatoriu

Limitări:

  • În implementările moderne, ID-ul nodului este adesea aleatoriu (nu o adresă MAC reală)
  • Din motive de confidențialitate, adresele MAC sunt adesea înlocuite cu valori aleatorii
  • Nu se poate identifica în mod fiabil o anumită mașină

Validarea UUID

Decodorul funcționează și ca validator UUID.

Verificarea validității UUID

Decodorul validează automat:

  • ✅ Format corect (8-4-4-4-12 caractere hexazecimale)
  • ✅ Caractere hexazecimale valide (0-9, a-f)
  • ✅ Lungime corectă (36 de caractere inclusiv cratime, 32 fără)

Recunoașterea UUID-urilor invalide

Exemple invalide:

❌ 6ba7b810-9dad-11d1-80b4          (prea scurt)
❌ 6ba7b810-9dad-11d1-80b4-GHIJKLMN (caractere invalide)
❌ 6ba7b81-09dad-11d1-80b4-00c04fd4 (format greșit)

Pentru dezvoltatori

Implementare în JavaScript

// Extracția versiunii din UUID
function getUUIDVersion(uuid) {
    const cleaned = uuid.replace(/-/g, '');
    return parseInt(cleaned[12], 16);
}

// Extracția marcajului temporal din 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);
}

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

Validarea UUID folosind Regex

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);
}

Întrebări frecvente (FAQ)

Pot obține timpul de creare dintr-un UUID v4? Nu, UUID v4 este pur aleatoriu și nu conține informații temporale. Pentru UUID-uri cu timp, utilizați v1, v6 sau v7.
De ce ID-ul nodului din UUID v1 este aleatoriu în loc de o adresă MAC? Implementările moderne utilizează un ID de nod aleatoriu din motive de confidențialitate. Dezvăluirea unei adrese MAC reale ar putea reprezenta un risc de securitate.
Pot recupera URL-ul sau numele original dintr-un UUID v5? Nu, UUID v5 folosește un hash SHA-1, care este unidirecțional. Datele originale nu pot fi recuperate din hash.
Cum îmi dau seama dacă un UUID este aleatoriu (v4)? Decodorul va afișa versiunea UUID. Dacă versiunea este 4, este un UUID generat aleatoriu, fără metadate suplimentare.
Este marcajul temporal din UUID v1 precis? Da, UUID v1 are o precizie teoretică de 100 nanosecunde (de la 15 octombrie 1582). În practică, depinde de precizia ceasului sistemului.
Pot folosi decodorul pentru a valida un UUID? Da, decodorul validează automat formatul UUID și afișează o eroare dacă UUID-ul este invalid.

Securitate și confidențialitate

Ce dezvăluie UUID-ul?

UUID v1/v6:

  • ⚠️ Ora creării - poate dezvălui sincronizarea operațiunilor
  • ⚠️ Potențial adresă MAC - risc de identificare a dispozitivului (aleatoriu în implementările moderne)

UUID v4:

  • Sigur - nu conține metadate

UUID v7:

  • ⚠️ Marcaj temporal Unix - dezvăluie ora creării

Recomandări

  • ✅ Utilizați UUID v4 pentru confidențialitate maximă
  • ⚠️ Fiți precaut cu UUID-urile v1/v6/v7 în API-urile publice (dezvăluie informații temporale)
  • ✅ UUID v5 este determinist, dar nu dezvăluie datele originale
  • ⚠️ Hash-ul MD5 nu este complet sigur

Curiozități

  • Cel mai vechi UUID v1 posibil: 15 octombrie 1582 00:00:00 (începutul calendarului gregorian)
  • Cel mai nou UUID v7: 10889-08-02 05:31:50.655 (limita marcajului temporal Unix în ms)
  • Precizia UUID v1: 100 nanosecunde (teoretic 10 milioane de UUID-uri pe secundă)
  • UUID Nil: 00000000-0000-0000-0000-000000000000 (un UUID special “gol”)
  • UUID Max: ffffffff-ffff-ffff-ffff-ffffffffffff (valoare maximă)

Utilizare în diferite sisteme

PostgreSQL

-- Extracția versiunii UUID
SELECT substring(id::text, 15, 1) as version
FROM users;

-- Filtrarea după versiune
SELECT *
FROM users
WHERE substring(id::text, 15, 1) = '4';

MySQL

-- Verificarea formatului 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}$';