UUID dekodētājs un validētājs | Versiju (v1, v4, v7) un laika analīze

Ievadiet savu UUID augstāk esošajā laukā, un šis rīks (UUID parsētājs) nekavējoties veiks tiešsaistes pārbaudi, noteiks versiju, derīgumu un izvilks slēpto informāciju.

Kas ir UUID dekodētājs?

UUID dekodētājs ir rīks, kas analizē UUID (Universally Unique Identifier – universāls unikāls identifikators) un izvelk no tā visu pieejamo informāciju. UUID nav tikai nejauša rakstzīmju virkne – atkarībā no versijas tas var saturēt laika zīmogu, sistēmas informāciju vai deterministisku datu jaucējkodu (hash).

Kādu informāciju varat iegūt no UUID?

Pamata informācija par UUID

UUID versija:

  • Nosaka UUID tipu un struktūru (v1, v3, v4, v5, v6, v7)
  • Izvilkts no 13. heksadecimālās rakstzīmes

Variants:

  • RFC 4122 - Standarta UUID variants
  • NCS - Network Computing System (novecojis)
  • Microsoft - Microsoft GUID variants
  • Reserved - Rezervēts nākotnes lietošanai

UUID v1 - Laika zīmogs + MAC adrese

Ko varat iegūt:

  • Precīzs izveides laiks - datums un laiks ar precizitāti līdz 100 nanosekundēm
  • Pulkeņa secība - secības numurs sadursmju novēršanai
  • Mezglu ID - sākotnēji MAC adrese, bieži vien nejaušas vērtības

Piemērs:

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

Versija: v1 (Laika zīmogs + MAC)
Variants: RFC 4122
Datums un laiks: 15.10.1997 04:25:33.000
Pulkeņa secība: 724
Mezglu ID: 00:C0:4F:D4:30:C8

Lietošana:

  • Lai noteiktu, kad ieraksts tika izveidots
  • Audits un forenziskā analīze
  • Ar laiku saistītu problēmu atkļūdošana

UUID v3/v5 - Balstīts uz jaucējkodu (Hash)

Ko varat iegūt:

  • Jaucējkoda tips - MD5 (v3) vai SHA-1 (v5)
  • Nav iegūstams - sākotnējais nosaukumvieta (namespace) un nosaukums (vienvirziena jaucējkods)

Piemērs:

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

Versija: v5 (SHA-1 jaucējkods)
Variants: RFC 4122
Tips: Uz jaucējkodu balstīts UUID (deterministisks)
Piezīme: Sākotnējo nosaukumvietu (namespace) un nosaukumu nevar atgūt no UUID

Lietošana:

  • Lai pārbaudītu, vai UUID ir deterministisks
  • UUID tipa identifikācija datubāzē
  • Jaucējkoda balstītu identifikatoru konsistences pārbaude

UUID v4 - Nejaušs

Ko varat iegūt:

  • Versija - apstiprinājums, ka tas ir nejaušs
  • Variants - RFC 4122 standarts
  • Nav citu datu - tīri nejauši biti

Piemērs:

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

Versija: v4 (Nejaušs)
Variants: RFC 4122
Tips: Nejauši ģenerēts UUID

Lietošana:

  • Lai pārbaudītu, vai UUID ir nejaušs (nav deterministisks)
  • Pareiza UUID formāta pārbaude
  • UUID validācija pirms saglabāšanas datubāzē

UUID v6 - Kārtots laika zīmogs

Ko varat iegūt:

  • Precīzs izveides laiks - pārkārtots labākai DB veiktspējai
  • Pulkeņa secība - secības numurs
  • Mezglu ID - mezgla identifikators

Piemērs:

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

Versija: v6 (Kārtots laika zīmogs)
Variants: RFC 4122
Datums un laiks: 30.01.2026 14:23:45.123
Pulkeņa secība: 3272
Mezglu ID: 9E:6B:DE:CE:D8:46

Lietošana:

  • Ieraksta izveides laika noteikšana
  • Hronoloģiskās kārtošanas analīze DB
  • Izplatīto sistēmu atkļūdošana

UUID v7 - Unix laika zīmogs

Ko varat iegūt:

  • Unix laika zīmogs - milisekundes kopš 1970. gada 1. janvāra
  • Datums un laiks - standarta Unix laika zīmoga formāts
  • Nejaušā daļa - nevar dekodēt

Piemērs:

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

Versija: v7 (Unix laika zīmogs)
Variants: RFC 4122
Datums un laiks: 30.01.2026 14:23:45.123

Lietošana:

  • Mūsdienu UUID izveides laika iegūšana
  • Laika secības analīze
  • Datu migrācija ar laika zīmogiem

UUID struktūra

UUID ir šādā formātā: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

6ba7b810-9dad-11d1-80b4-00c04fd430c8
│      │ │  │ │  │ │  │ │           │
│      │ │  │ │  │ │  │ └───────────┴─ Mezgls (48 biti)
│      │ │  │ │  │ └──┴─────────────── Pulkeņa secība (14 biti)
│      │ │  │ └──┴────────────────────── Variants (2-3 biti)
│      │ └──┴───────────────────────────── Versija (4 biti) + Time High
│      └──────────────────────────────────── Time Mid (16 biti)
└─────────────────────────────────────────── Time Low (32 biti)

Versiju un variantu izvilkšana

Versija (M):

  • Pozīcija: 13. heksadecimālā rakstzīme
  • Vērtības: 1-7 (dažādas UUID versijas)

Variants (N):

  • 0-7: NCS (Rezervēts)
  • 8-B: RFC 4122 (standarts)
  • C-D: Microsoft
  • E-F: Nākotne (Rezervēts)

Praktiski piemēri

Atkļūdošana - Ieraksta izveides laika noteikšana

Scenārijs: Lietotājs ziņo, ka viņa dati ir pazuduši. Jums ir jānoskaidro, kad ieraksts tika izveidots.

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

→ Ieraksts tika izveidots 1997. gadā

Forenziskā analīze - Laika secības pārbaude

Scenārijs: Pārbaudiet, vai notikumi norisinājās pareizā secībā.

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 tika izveidots vēlāk (pareizā secībā)

UUID tipa identifikācija datubāzē

Scenārijs: Jums ir jaukti UUID datubāzē, un jums ir jāzina, kuri ir nejauši un kuriem ir laika zīmogs.

f47ac10b-58cc-4372-a567-0e02b2c3d479 → v4 (nejaušs, bez laika zīmoga)
6ba7b810-9dad-11d1-80b4-00c04fd430c8 → v1 (ar laika zīmogu)
017f22e2-79b0-7cc3-98c4-dc0c0c07398f → v7 (ar laika zīmogu)

→ Tikai v1 un v7 UUID satur laika informāciju

Ierobežojumi un ko nevar iegūt

❌ UUID v3/v5 - Nevar dekodēt jaucējkodu (hash)

Neiespējami:

  • Atgūt sākotnējo nosaukumvietu (namespace)
  • Atgūt sākotnējo nosaukumu/vērtību
  • Noskaidrot, kādi dati tika sajaukti (hashed)

Iemesls: MD5 un SHA-1 ir vienvirziena jaucējfunkcijas.

❌ UUID v4 - Nav slēptu datu

Neiespējami:

  • Iegūt jebkādus metadatus
  • Noskaidrot izveides laiku
  • Identificēt avotu

Iemesls: UUID v4 ir tīri nejaušs, tas nesatur nekādu strukturētu informāciju.

⚠️ UUID v1/v6 - Mezglu ID var būt nejaušs

Ierobežojumi:

  • Mūsdienu implementācijās mezglu ID bieži ir nejaušs (nav īsta MAC adrese)
  • Privātuma aizsardzības dēļ MAC adreses bieži tiek aizstātas ar nejaušām vērtībām
  • Nav iespējams droši identificēt konkrētu mašīnu

UUID validācija

Dekodētājs darbojas arī kā UUID validētājs.

UUID derīguma pārbaude

Dekodētājs automātiski validē:

  • ✅ Pareizs formāts (8-4-4-4-12 heksadecimālās rakstzīmes)
  • ✅ Derīgas heksadecimālās rakstzīmes (0-9, a-f)
  • ✅ Pareizs garums (36 rakstzīmes, ieskaitot defises, 32 bez)

Nederīgu UUID atpazīšana

Nederīgi piemēri:

❌ 6ba7b810-9dad-11d1-80b4          (pārāk īss)
❌ 6ba7b810-9dad-11d1-80b4-GHIJKLMN (nederīgas rakstzīmes)
❌ 6ba7b81-09dad-11d1-80b4-00c04fd4 (nepareizs formāts)

Izstrādātājiem

JavaScript implementācija

// UUID versijas izvilkšana
function getUUIDVersion(uuid) {
    const cleaned = uuid.replace(/-/g, '');
    return parseInt(cleaned[12], 16);
}

// Laika zīmoga izvilkšana no 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);
}

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

UUID validācija, izmantojot 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);
}

Biežāk uzdotie jautājumi (BUJ)

Vai es varu iegūt izveides laiku no UUID v4? Nē, UUID v4 ir tīri nejaušs un nesatur nekādu laika informāciju. UUID ar laika zīmogu izmantojiet v1, v6 vai v7.
Kāpēc UUID v1 mezglu ID ir nejaušs, nevis MAC adrese? Mūsdienu implementācijās tiek izmantoti nejauši mezglu ID privātuma aizsardzības dēļ. Īstas MAC adreses atklāšana varētu radīt drošības risku.
Vai es varu atgūt sākotnējo URL vai nosaukumu no UUID v5? Nē, UUID v5 izmanto SHA-1 jaucējkodu, kas ir vienvirziena. No jaucējkoda nav iespējams atgūt sākotnējos datus.
Kā es varu zināt, ka UUID ir nejaušs (v4)? Dekodētājs parādīs UUID versiju. Ja versija ir 4, tas ir nejauši ģenerēts UUID bez papildu metadatiem.
Vai laika zīmogs UUID v1 ir precīzs? Jā, UUID v1 ir teorētiska precizitāte 100 nanosekundes (kopš 1582. gada 15. oktobra). Praksē tas ir atkarīgs no sistēmas pulksteņa precizitātes.
Vai es varu izmantot dekodētāju UUID validācijai? Jā, dekodētājs automātiski validē UUID formātu un parādīs kļūdu, ja UUID ir nederīgs.

Drošība un privātums

Ko atklāj UUID?

UUID v1/v6:

  • ⚠️ Izveides laiks - var atklāt operāciju laiku
  • ⚠️ Potenciāli MAC adrese - ierīces identifikācijas risks (mūsdienu implementācijās nejauša)

UUID v4:

  • Drošs - nesatur nekādus metadatus

UUID v7:

  • ⚠️ Unix laika zīmogs - atklāj izveides laiku

Ieteikumi

  • ✅ Izmantojiet UUID v4 maksimālai privātumam
  • ⚠️ Esiet piesardzīgi ar UUID v1/v6/v7 publiskās API (tie atklāj laika informāciju)
  • ✅ UUID v5 ir deterministisks, bet neatklāj sākotnējos datus
  • ⚠️ MD5 jaucējkods nav pilnībā drošs

Interesanti fakti

  • Vecākais iespējamais UUID v1: 1582. gada 15. oktobris 00:00:00 (Gregora kalendāra sākums)
  • Jaunākais UUID v7: 10889. gada 2. augusts 05:31:50.655 (Unix laika zīmoga limits ms)
  • UUID v1 precizitāte: 100 nanosekundes (teorētiski 10 miljoni UUID sekundē)
  • UUID Nil: 00000000-0000-0000-0000-000000000000 (īpašs “tukšs” UUID)
  • UUID Max: ffffffff-ffff-ffff-ffff-ffffffffffff (maksimālā vērtība)

Lietošana dažādās sistēmās

PostgreSQL

-- UUID versijas izvilkšana
SELECT substring(id::text, 15, 1) as version
FROM users;

-- Filtrēšana pēc versijas
SELECT *
FROM users
WHERE substring(id::text, 15, 1) = '4';

MySQL

-- UUID formāta pārbaude
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}$';