# Gjenerator UUID

> Gjeneroni UUID (Identifikues Unik Universal) online falas. Mbështet të gjitha versionet e UUID (v1, v3-v7) me gjenerim të mijëra UUID menjëherë.

URL: https://acrafto.com/sq/gjenerator-uuid/

Tools are interactive browser apps; there is no public API, no endpoints to call and no server-side processing. To use a tool, open its HTML page in a browser.

## Çfarë është UUID?

UUID (Identifikues Universal Unik) është një identifikues 128-bit i përdorur në sistemet kompjuterike për identifikimin unik të informacionit. UUID standardizohet sipas RFC 4122 dhe, falë entropisë së tij të madhe, garanton një probabilitet praktikisht zero të përplasjes – kjo do të thotë se dy UUID të gjeneruara në mënyrë të pavarur do të jenë pothuajse me siguri unike.

UUID ka një format standard: `xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx`, ku çdo `x` është një shifër heksadecimale (0-9, a-f), `M` tregon versionin e UUID, dhe `N` tregon variantin.

## Versionet e UUID

### UUID v1 (Kohë-Stampë + Adresë MAC)

UUID v1 bazohet në kohë-stampën aktuale dhe një vlerë të rastësishme (në shfletues në vend të adresës MAC). Përdor intervale 100-nanosekonde që nga 15 tetor 1582 (Kalendari Gregorian).

**Përdorimi:**

- Situata kur keni nevojë për renditje kronologjike të UUID-ve
- Debugging dhe logim (UUID përmban informacionin për kohën e krijimit)
- Sistemet e shpërndara me sinkronizim kohor

**Shembull:** `6ba7b810-9dad-11d1-80b4-00c04fd430c8`

**Avantazhet:**

- UUID mund të renditet kronologjikisht sipas kohës së krijimit
- I dobishëm për auditim dhe debugging
- Përmban informacionin e kohë-stampës

**Disavantazhet:**

- Rrezik potencial sigurie – përmban kohë-stampën
- Në shfletues nuk përmban adresën reale MAC (zëvendësohet me një vlerë të rastësishme)
- Lokalitet i dobët i DB (kohë-stampa është në bitet me rend të ulët)

### UUID v3 (Hash MD5)

UUID v3 gjenerohet duke përdorur hash-in MD5 të një hapësire emërore UUID dhe një emri. Deterministic – e njëjta hapësirë emërore + emër gjithmonë do të krijojnë të njëjtën UUID.

**Përdorimi:**

- Konvertimi i URL-ve, emrave DNS ose identifikuesve të tjerë në UUID
- Situata kur keni nevojë për UUID të riprodhueshëm
- Lidhja midis sistemeve të ndryshme të identifikimit

**Shembull:** `a3bb189e-8bf9-3888-9912-ace4e6543002`

**Avantazhet:**

- Deterministic (e njëjta hyrje = e njëjta dalje)
- Ideale për konvertimin e identifikuesve të njohur
- Asnjë përplasje për hyrje të ndryshme

**Disavantazhet:**

- MD5 është një algoritëm i vjetëruar (preferoni v5)
- Kërkon një hapësirë emërore dhe një emër
- Nuk mund të rimarrësh hyrjen origjinale

### UUID v4 (I Rastësishëm) - REKOMANDOHET

Versioni më i përdorur i UUID. UUID v4 gjenerohet në mënyrë plotësisht të rastësishme duke përdorur një gjenerator numrash të rastësishëm kriptografikisht të sigurt (`crypto.getRandomValues()`).

**Përdorimi:**

- Çelësat primarë të bazave të të dhënave
- Identifikuesit e sesioneve (session IDs)
- Emrat unikë të fajllave
- Tokenat API
- Qëllime të përgjithshme, ku keni nevojë për një ID të garantuar unike

**Shembull:** `f47ac10b-58cc-4372-a567-0e02b2c3d479`

**Avantazhet:**

- Entropia dhe siguria maksimale
- Asnjë varësi nga koha ose parametrat e sistemit
- Implementimi më i thjeshtë

**Probabiliteti i përplasjes:** Gjatë gjenerimit të 1 miliard UUID-ve në sekondë për 100 vjet, shansi për një përplasje është afërsisht 0.00000006%.

### UUID v5 (Hash SHA-1)

UUID v5 është i njëjtë si v3, por përdor SHA-1 në vend të MD5. Një alternativë më moderne dhe më e sigurt se v3.

**Përdorimi:**

- E njëjta si v3, por me siguri më të mirë
- Preferohet ndaj v3 për projekte të reja
- Gjenerimi i UUID nga URL, emrat DNS, OID, X.500 DN

**Shembull:** `886313e1-3b8a-5372-9b90-0c9aee199e5d`

**Avantazhet:**

- Deterministic
- SHA-1 është më i fuqishëm se MD5
- I përshtatshëm për lidhjen midis sistemeve

**Disavantazhet:**

- SHA-1 gjithashtu konsiderohet i vjetëruar (por ende më i sigurt se MD5)
- Kërkon një hapësirë emërore dhe një emër

### UUID v6 (Kohë-Stampë e Renditur)

UUID v6 është një version i përmirësuar i v1 me bite kohe të rirenditura për indeksim më të mirë të DB. Projektuar për të zgjidhur problemet me lokalitetin në bazat e të dhënave.

**Përdorimi:**

- Çelësat primarë të bazave të të dhënave me renditje kohore
- Sistemet që kërkojnë renditje kronologjike dhe performancë DB
- Një alternativë më moderne se v1

**Shembull:** `1ec9414c-232a-6b00-b3c8-9e6bdeced846`

**Avantazhet:**

- Lokalitet më i mirë i DB se v1 (kohë-stampa në bitet me rend të lartë)
- Renditje kronologjike
- E përputhshme me standardin UUID

**Disavantazhet:**

- Më pak i përdorur se v1/v4
- Ende përmban informacione kohore (rrezik sigurie)

### UUID v7 (Kohë-Stampë Unix)

UUID v7 përdor kohë-stampën Unix (milisekonda nga 1970) + bite të rastësishme. Versioni më i ri i UUID me lokalitetin më të mirë të DB.

**Përdorimi:**

- Çelësat primarë modernë të bazave të të dhënave
- Sistemet që kërkojnë performancë + renditje kohore
- Zëvendësim për v1/v6 në projekte të reja

**Shembull:** `017f22e2-79b0-7cc3-98c4-dc0c0c07398f`

**Avantazhet:**

- Lokalitetin më të mirë të DB nga të gjitha versionet
- Kohë-stampa Unix është standarde
- Kombinon avantazhet e rastësisë dhe renditjes kohore

**Disavantazhet:**

- Specifikim relativisht i ri (RFC 4122bis)
- Më pak i mbështetur në sistemet e trashëguara

## Cilin version të UUID të përdorni?

### Udhëzues Vendimmarrës

**Keni nevojë për siguri maksimale dhe rastësi?** → Përdorni **UUID v4** (zgjedhja më e zakonshme)

**Keni nevojë për renditje kohore dhe performancë DB?** → Përdorni **UUID v7** (modern) ose **UUID v6** (standard)

**Keni nevojë për UUID të riprodhueshëm nga identifikues ekzistues?** → Përdorni **UUID v5** (SHA-1) ose **UUID v3** (MD5, trashëgimi)

**Keni nevojë për një kohë-stampë dhe gjurmë auditimi?** → Përdorni **UUID v1** (trashëgimi, performancë më e dobët e DB)

### Baza e të Dhënave

**Për projekte të reja:** UUID v7 ose v4

- **v7** është ideale për renditje kohore + performancë
- **v4** për rastësi maksimale pa informacione kohore

**Për sisteme të trashëguara:** UUID v1 ose v6

- **v6** ka lokalitet më të mirë të DB se v1
- **v1** është i mbështetur gjerësisht

**Avantazhet e UUID si çelës primar:**

- **Uniketi Global** – Mund të lidhni të dhëna nga baza të ndryshme të të dhënave pa konflikt
- **Siguria** – Ndryshe nga ID-të sekuenciale (1, 2, 3…), nuk mund të parashikohen vlerat e ardhshme
- **Sistemet e shpërndara** – UUID mund të gjenerohet në mënyrë të pavarur në servera të shumtë pa koordinim
- **Bashkimi i bazave të të dhënave** – Gjatë bashkimit të dy bazave të të dhënave nuk lindin konflikte

**Disavantazhet:**

- Madhësi më e madhe (16 bajtë vs 4-8 bajtë për integer)
- Indeksim më i ngadalshëm në disa baza të të dhënave (përdorni v6/v7 për performancë më të mirë)
- Më pak i lexueshëm për njeriun

### API dhe Shërbime Ueb

- **REST API** – Identifikues unikë për burime
- **GraphQL** – Identifikues globalë për nyje
- **Webhook** – Gjurmimi i kërkesave dhe përgjigjeve
- **Tokena** – ID sesionesh, tokena rifreskimi

### Fajllat dhe Ruajtja

- **Emrat e fajllave** – Parandalimi i përplasjeve gjatë ngarkimit
- **S3/Cloud Storage** – Shtigje unike për objekte
- **Çelësat e cache-it** – Identifikuesit në sistemet e cache-it

### Aplikacionet Frontend

- **Komponentët React/Vue** – Çelësa unikë për lista
- **ID të përkohshme** – ID para ruajtjes në bazën e të dhënave
- **Ruajtja lokale** – Çelësa për të dhënat e ruajtura
- **Aplikacionet offline-first** – Gjenerimi i ID-ve pa lidhje me serverin

## Funksionet e Avancuara të Gjeneratorit

### Gjenerimi i UUID me Kohë të Personalizuar

Për versionet e bazuara në kohë (v1, v6, v7) mund të zgjidhni çdo kohë-stampë duke përdorur zgjedhësin e datës-kohës. Kjo është e dobishme për:

**Testimi:**

- Simulimi i UUID-ve të krijuara në të kaluarën
- Testimi i renditjes kohore në bazat e të dhënave
- Riprodhimi i UUID-ve për debugging

**Migrimi i të dhënave:**

- Gjenerimi i UUID-ve me kohë-stampa historike
- Mbushja e të dhënave me vlera të sakta të kohë-stampës
- Importimi i të dhënave nga periudha të ndryshme kohore

**Auditim dhe Pajtueshmëri:**

- Rikonstruksioni i UUID-ve sipas kohës së krijimit të rekordit
- Gjenerimi retroaktiv i identifikuesve

**Shembull përdorimi:**

1. Zgjidhni versionin v1, v6 ose v7
2. Vendosni datën dhe kohën duke përdorur zgjedhësin e datës-kohës
3. Gjeneroni UUID me kohë-stampën tuaj të personalizuar

### UUID bazuar në Hash (v3, v5)

Për UUID deterministike mund të përdorni versionet v3 (MD5) ose v5 (SHA-1):

**Si të përdorni:**

1. Zgjidhni hapësirën emërore sipas llojit të identifikuesit tuaj
2. Futni emrin/vlerën
3. Gjeneroni UUID

**Shembuj:**

| Hapësira Emërore | Emri (hyrja) | Përdorimi |
| --- | --- | --- |
| DNS | `example.com` | Konvertimi i emrit të domenit në UUID |
| DNS | `google.com` | Çdo uebfaqe ka një UUID unike |
| URL | `https://example.com/page` | Konvertimi i URL-së në UUID |
| URL | `https://api.example.com/users/123` | Pikë fundore API si UUID |
| OID | `1.3.6.1.4.1.343` | Identifikues Objekti në UUID |
| X.500 | `CN=John Doe,O=Company` | Emër i dalluar në UUID |

**Karakteristika të rëndësishme:**

- ✅ **Deterministike**: E njëjta hyrje = gjithmonë e njëjta UUID
- ✅ **Riprodhueshme**: Mund të rikrijoni UUID-në në çdo kohë
- ✅ **Konsistente**: E njëjta UUID në sisteme të ndryshme
- ❌ **Nuk mund të deshifrohet**: Nga UUID nuk mund të merrni përsëri emrin origjinal
- ℹ️ **Një UUID**: Për v3/v5 gjenerohet gjithmonë vetëm një UUID (e njëjta hyrje = e njëjta dalje)

**Përdorim praktik:**

```
// Shembull: Konvertimi i URL-së në UUID v5
Namespace: URL
Emri: https://example.com/api/users/123
Rezultati: 886313e1-3b8a-5372-9b90-0c9aee199e5d

// E njëjta hyrje = gjithmonë e njëjta UUID
Namespace: DNS
Emri: google.com
Rezultati: gjithmonë e njëjta UUID për google.com
```

## Si të përdorni UUID në mënyrë të sigurt?

### Siguria Kriptografike

Gjeneratori ynë përdor `crypto.getRandomValues()`, i cili është një gjenerator numrash të rastësishëm kriptografikisht të sigurt. Ndryshe nga `Math.random()`, i cili është i parashikueshëm dhe i papërshtatshëm për qëllime sigurie, `crypto.getRandomValues()` ofron entropi të vërtetë të përshtatshme për:

- Gjenerimi i tokenave të sigurisë
- ID sesionesh
- Çelësa API
- Aplikacione kriptografike

### Krahasimi i Versioneve të UUID

| Versioni | Baza | Përplasje | Renditje Kohore | Performanca DB | Përdorimi |
| --- | --- | --- | --- | --- | --- |
| v1 | Kohë-Stampë + MAC | E ulët | ✅ Po | ❌ Më keq | Trashëgimi, auditim |
| v3 | Hash MD5 | Asnjë (deterministike) | ❌ Jo | ⚠️ Mesatare | Konvertime (trashëgimi) |
| v4 | E rastësishme | Jashtëzakonisht e ulët | ❌ Jo | ⚠️ Mesatare | Përdorim i përgjithshëm |
| v5 | Hash SHA-1 | Asnjë (deterministike) | ❌ Jo | ⚠️ Mesatare | Konvertime (rekomandohet) |
| v6 | Kohë-stampë e renditur | E ulët | ✅ Po | ✅ Më mirë | DB moderne me kohë |
| v7 | Kohë-stampë Unix | E ulët | ✅ Po | ✅ Më e mira | Projekte të reja |

### UUID vs Identifikues të Tjerë

| Tipi | Madhësia | Përplasje | Renditje Kohore | Përdorimi |
| --- | --- | --- | --- | --- |
| ID Auto-increment | 4-8 bajtë | E garantuar unike brenda tabelës | ❌ | Aplikacione të thjeshta, DB lokale |
| UUID v4 | 16 bajtë | Praktikisht e pamundur | ❌ | Sisteme të shpërndara, API |
| UUID v7 | 16 bajtë | Praktikisht e pamundur | ✅ | DB moderne me performancë |
| ULID | 16 bajtë | Praktikisht e pamundur | ✅ | UUID + renditje leksikografike |
| Snowflake ID | 8 bajtë | E garantuar unike me konfigurim të saktë | ✅ | Twitter, sisteme të shpërndara |
| NanoID | E konfigurueshme | Varet nga gjatësia | ❌ | ID miqësore me URL |

## Implementimi në Gjuhë të Ndryshme

### JavaScript/TypeScript

```
// UUID v4 - Mënyra më e thjeshtë (shfletues modernë)
const uuid = crypto.randomUUID();

// UUID v4 - Implementim manual
function generateUUIDv4() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
    const r = (crypto.getRandomValues(new Uint8Array(1))[0] & 0x0f) >> (c === 'x' ? 0 : 2);
    const v = c === 'x' ? r : (r & 0x3) | 0x8;
    return v.toString(16);
  });
}

// UUID v7 - Rekomandohet për baza të dhënash
function generateUUIDv7() {
  const timestamp = Date.now();
  const timeHi = (timestamp >> 16).toString(16).padStart(8, '0');
  const timeLow = (timestamp & 0xFFFF).toString(16).padStart(4, '0');

  const randomBytes = crypto.getRandomValues(new Uint8Array(10));
  const randomHex = Array.from(randomBytes)
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');

  return `${timeHi}-${timeLow}-7${randomHex.substr(0, 3)}-${randomHex.substr(3, 4)}-${randomHex.substr(7)}`;
}
```

### Python

```
import uuid

# UUID v4
uuid_v4 = str(uuid.uuid4())
# Output: '6ba7b810-9dad-11d1-80b4-00c04fd430c8'

# UUID v1
uuid_v1 = str(uuid.uuid1())
```

### Java

```
import java.util.UUID;

// UUID v4
String uuidV4 = UUID.randomUUID().toString();
```

### PHP

```
// UUID v4 (PHP 7+)
function generateUUID() {
    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
        mt_rand(0, 0xffff), mt_rand(0, 0xffff),
        mt_rand(0, 0xffff),
        mt_rand(0, 0x0fff) | 0x4000,
        mt_rand(0, 0x3fff) | 0x8000,
        mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
    );
}
```

### C#

```
using System;

// UUID v4
Guid uuid = Guid.NewGuid();
string uuidString = uuid.ToString();
```

## Praktikat më të Mira

### Ruajtja e UUID në Baza të Dhënash

**PostgreSQL:**

```
CREATE TABLE users (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT NOW()
);
```

**MySQL 8.0+:**

```
CREATE TABLE users (
    id BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())),
    email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

**Këshillë:** Në MySQL, ruani UUID si `BINARY(16)` në vend të `CHAR(36)` për të kursyer hapësirë dhe për indeksim më të shpejtë.

### Validimi i UUID

```
function isValidUUID(uuid) {
  const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
  return regex.test(uuid);
}
```

### Konvertimi i UUID

```
// Heqja e vizave ndarëse
const compact = uuid.replace(/-/g, '');

// Shtimi i vizave ndarëse përsëri
function formatUUID(compactUuid) {
  return [
    compactUuid.substring(0, 8),
    compactUuid.substring(8, 12),
    compactUuid.substring(12, 16),
    compactUuid.substring(16, 20),
    compactUuid.substring(20, 32)
  ].join('-');
}
```

## Zgjidhja e Problemeve (Troubleshooting)

### UUID v3/v5 nuk funksionon

**Problem:** Pas zgjedhjes së v3 ose v5, asgjë nuk gjenerohet

**Zgjidhje:**

1. ✅ Kontrolloni që keni **plotësuar fushën “Emri”** - është e detyrueshme!
2. ✅ Zgjidhni hapësirën emërore të saktë sipas llojit të hyrjes tuaj
3. ✅ Shembuj të hyrjeve të vlefshme:
   - DNS: `example.com`, `google.com`
   - URL: `https://example.com/page`
   - Çdo tekst: `aplikacioni-im-v1`

**Këshillë:** Provoni së pari një vlerë të thjeshtë si `test` dhe hapësirën emërore DNS.

### UUID me kohë (v1, v6, v7) ka kohë të çuditshme

**Problem:** UUID-ja e gjeneruar ka një kohë-stampë të papritur

**Zgjidhje:**

1. ✅ Kontrolloni zgjedhësin e datës-kohës - është vendosur koha e saktë?
2. ✅ Zgjedhësi i datës-kohës përdor zonën tuaj kohore lokale
3. ✅ Lëreni zgjedhësin e datës-kohës bosh për kohën aktuale

### UUID nuk mund të kopjohet

**Problem:** Butoni “Kopjo të Gjitha” nuk funksionon

**Zgjidhje:**

1. ✅ Kontrolloni që keni gjeneruar UUID (nuk janë bosh)
2. ✅ Disa shfletues kërkojnë HTTPS për API-në e clipboard-it
3. ✅ Si alternativë, zgjidhni tekstin në textarea dhe kopjoni manualisht (Ctrl+C)

## Pyetje të Shpeshta (FAQ)

### A mund të ndodhë një përplasje UUID?

Teorikisht po, por probabiliteti është astronomikisht i vogël. Gjatë gjenerimit të 1 miliard UUID v4 në sekondë për 100 vjet, shansi për një përplasje është afërsisht 0.00000006%. Në praktikë, një përplasje nuk ndodh kurrë.

### A është UUID i përshtatshëm si çelës primar në bazën e të dhënave?

Varet nga rasti i përdorimit. UUID është ideal për sistemet e shpërndara dhe situatat kur keni nevojë për unikitet global. Për aplikacione të thjeshta me një bazë të dhënash, auto-increment mund të jetë më efikas.

### A janë të sigurta UUID-të e gjeneruara nga ky mjet?

Po, ne përdorim Web Crypto API (\`crypto.getRandomValues()\`), e cila ofron vlera të rastësishme kriptografikisht të sigurta. Gjithçka ndodh lokalisht në shfletuesin tuaj.

### Cili është ndryshimi midis versioneve të UUID?

\- \*\*v1\*\*: Kohë-stampë + MAC/rastësi - renditje kronologjike, performancë më e dobët e DB - \*\*v3/v5\*\*: Bazuar në hash - deterministike, për konvertimin e identifikuesve të njohur - \*\*v4\*\*: I rastësishëm - më i sigurt, më i përdorur - \*\*v6\*\*: Kohë-stampë e rirenditur - performancë më e mirë e DB se v1 - \*\*v7\*\*: Kohë-stampë Unix - performanca më e mirë e DB + renditje kohore

### Cilin version të UUID duhet të përdor?

Për shumicën e rasteve përdorni \*\*v4\*\* (i rastësishëm). Për baza të dhënash me renditje kohore përdorni \*\*v7\*\* (modern) ose \*\*v6\*\* (standard). Për konvertimin e identifikuesve të njohur (URL, DNS) përdorni \*\*v5\*\* (SHA-1).

### A mund të përdor UUID për tokena dhe çelësa API?

UUID v4 është i përshtatshëm për ID sesionesh dhe tokena të ngjashëm. Për çelësa API, merrni parasysh përdorimin e stringjeve më të gjata të rastësishme (p.sh. vlera 256-bit) ose bibliotekave të specializuara.

### Sa të mëdha janë UUID-të?

UUID ka 128 bit (16 bajtë). Në formatin string me viza, zë 36 karaktere. Pa viza, 32 karaktere heksadecimale.

## Alternativat ndaj UUID

### ULID (Identifikues Universal Unik i Renditshëm Leksikografikisht)

- ID 128-bitësh (njësoj si UUID)
- I renditshëm leksikografikisht sipas kohës së krijimit
- Përfaqësim më kompakt (26 karaktere në vend të 36)
- Kriptim base32 pa ndjeshmëri ndaj shkronjave të mëdha/të vogla

**Shembull:** `01ARZ3NDEKTSV4RRFFQ69G5FAV`

### NanoID

- Madhësi më e vogël se UUID (21 karaktere standardisht)
- Miqësor me URL (pa karaktere speciale)
- Gjenerim më i shpejtë
- Gjatësi dhe alfabet i konfigurueshëm

**Shembull:** `V1StGXR8_Z5jdHi6B-myT`

### Snowflake ID (Twitter)

- ID 64-bitësh (më e vogël se UUID)
- I renditshëm sipas kohës
- Përmban ID-në e punonjësit dhe numrin e sekuencës
- Kërkon konfigurim të centralizuar

**Shembull:** `1234567890123456789`

## Performanca dhe Optimizimi

### Shpejtësia e Gjenerimit

Gjeneratori ynë mund të gjenerojë:

- **1 UUID:** < 1 ms
- **100 UUID:** ~10-20 ms
- **1000 UUID:** ~100-200 ms

### Këshilla për Performancë

1. **Gjenerimi me grup (Batch generation)** – Nëse keni nevojë për shumë UUID, gjenerojini të gjitha njëherësh në vend që një nga një
2. **Ruajtja në DB** – Indeksoni kolonat UUID për kërkim të shpejtë
3. **Kompresimi** – Ruani UUID në formë binare (16 bajtë) në vend të stringut (36 bajtë)
4. **Keshimi** – Në disa raste mund të paragjeneroni UUID dhe t’i keshoni

## Për Zhvilluesit

### Struktura e UUID v4

```
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|        |    |    |    |
|        |    |    |    └─ 48 bit të dhënash të rastësishme (nyje)
|        |    |    └────── 16 bit të dhënash të rastësishme me variant (clock_seq)
|        |    └─────────── 12 bit të dhënash të rastësishme + 4 bit version (time_hi_and_version)
|        └──────────────── 16 bit të dhënash të rastësishme (time_mid)
└───────────────────────── 32 bit të dhënash të rastësishme (time_low)
```

- Versioni (4 bit): gjithmonë `0100` (binar) = `4` (heks)
- Varianti (2-3 bit): gjithmonë `10` (binar) për RFC 4122

### Testimi i UUID

```
// Jest test
describe('UUID Generator', () => {
  test('generates valid UUID v4', () => {
    const uuid = generateUUIDv4();
    const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
    expect(regex.test(uuid)).toBe(true);
  });

  test('generates unique UUIDs', () => {
    const uuid1 = generateUUIDv4();
    const uuid2 = generateUUIDv4();
    expect(uuid1).not.toBe(uuid2);
  });
});
```

## Aspekte të Sigurisë

### Çfarë të mos bëni me UUID

❌ **Mos përdorni UUID v1 për aplikacione të ndjeshme** – Përmban kohë-stampën, gjë që mund të jetë një rrezik sigurie

❌ **Mos përdorni `Math.random()` për gjenerimin e UUID** – Nuk është kriptografikisht i sigurt

❌ **Mos u mbështetni te UUID për autorizim** – UUID mund të parashikohet (edhe pse me një probabilitet jashtëzakonisht të vogël)

❌ **Mos ruani UUID në cookies pa enkriptim** – Përdorni cookies të nënshkruara ose JWT

### Çfarë të bëni

✅ **Përdorni UUID v4 për shumicën e rasteve** – Entropia dhe siguria më e lartë

✅ **Kombinoni UUID me masa të tjera sigurie** – Për menaxhimin e sesioneve përdorni HTTPS, cookies HttpOnly, dhe skadim të shkurtër

✅ **Validoni UUID në server** – Gjithmonë kontrolloni formatin dhe versionin e UUID

✅ **Përdorni burime kriptografikisht të sigurta të rastësisë** – `crypto.getRandomValues()` në shfletues, `/dev/urandom` në Linux

## Kuriozitete

- **Numri i mundshëm i UUID v4:** 2^122 ≈ 5.3 × 10^36 (340 undecilionë)
- **Përplasje e nevojshme:** Për një shans 50% për përplasje, duhet të gjeneroni 2.71 × 10^18 UUID (2.71 kuadrilionë)
- **Madhësia e të gjitha UUID-ve të mundshme:** Nëse do të ruanim çdo UUID si 16 bajtë, i gjithë hapësira do të zinte 85 zettabajtë (85 miliardë terabajtë)
- **Origjina:** UUID u standardizua si pjesë e DCE (Distributed Computing Environment) në vitin 1990

## Other languages

- Čeština (cs): [Generátor UUID](https://acrafto.com/cs/generator-uuid/) ([Markdown](https://acrafto.com/cs/generator-uuid/index.md))
- Slovenčina (sk): [UUID generátor](https://acrafto.com/sk/generator-uuid/) ([Markdown](https://acrafto.com/sk/generator-uuid/index.md))
- English (en): [UUID Generator](https://acrafto.com/en/uuid-generator/) ([Markdown](https://acrafto.com/en/uuid-generator/index.md))
- Deutsch (de): [UUID Generator](https://acrafto.com/de/uuid-generator/) ([Markdown](https://acrafto.com/de/uuid-generator/index.md))
- Français (fr): [Générateur UUID](https://acrafto.com/fr/generateur-uuid/) ([Markdown](https://acrafto.com/fr/generateur-uuid/index.md))
- Español (es): [Generador de UUID](https://acrafto.com/es/generador-uuid/) ([Markdown](https://acrafto.com/es/generador-uuid/index.md))
- Italiano (it): [Generatore UUID](https://acrafto.com/it/generatore-uuid/) ([Markdown](https://acrafto.com/it/generatore-uuid/index.md))
- Português (pt): [Gerador de UUID](https://acrafto.com/pt/gerador-uuid/) ([Markdown](https://acrafto.com/pt/gerador-uuid/index.md))
- Nederlands (nl): [UUID generator](https://acrafto.com/nl/uuid-generator/) ([Markdown](https://acrafto.com/nl/uuid-generator/index.md))
- Polski (pl): [Generator UUID](https://acrafto.com/pl/generator-uuid/) ([Markdown](https://acrafto.com/pl/generator-uuid/index.md))
- Română (ro): [Generator UUID](https://acrafto.com/ro/generator-uuid/) ([Markdown](https://acrafto.com/ro/generator-uuid/index.md))
- Magyar (hu): [UUID generátor](https://acrafto.com/hu/uuid-generator/) ([Markdown](https://acrafto.com/hu/uuid-generator/index.md))
- Ελληνικά (el): [Γεννήτρια UUID](https://acrafto.com/el/gennitria-uuid/) ([Markdown](https://acrafto.com/el/gennitria-uuid/index.md))
- Български (bg): [UUID генератор](https://acrafto.com/bg/uuid-generator/) ([Markdown](https://acrafto.com/bg/uuid-generator/index.md))
- Hrvatski (hr): [Generator UUID](https://acrafto.com/hr/generator-uuid/) ([Markdown](https://acrafto.com/hr/generator-uuid/index.md))
- Slovenščina (sl): [UUID generator](https://acrafto.com/sl/generator-uuid/) ([Markdown](https://acrafto.com/sl/generator-uuid/index.md))
- Eesti (et): [UUID generaator](https://acrafto.com/et/uuid-generaator/) ([Markdown](https://acrafto.com/et/uuid-generaator/index.md))
- Latviešu (lv): [UUID ģenerators](https://acrafto.com/lv/uuid-generator/) ([Markdown](https://acrafto.com/lv/uuid-generator/index.md))
- Lietuvių (lt): [UUID generatorius](https://acrafto.com/lt/uuid-generatorius/) ([Markdown](https://acrafto.com/lt/uuid-generatorius/index.md))
- Svenska (sv): [UUID-generator](https://acrafto.com/sv/uuid-generator/) ([Markdown](https://acrafto.com/sv/uuid-generator/index.md))
- Dansk (da): [UUID generator](https://acrafto.com/da/uuid-generator/) ([Markdown](https://acrafto.com/da/uuid-generator/index.md))
- Suomi (fi): [UUID-generaattori](https://acrafto.com/fi/uuid-generaattori/) ([Markdown](https://acrafto.com/fi/uuid-generaattori/index.md))
- Norsk (no): [UUID-generator](https://acrafto.com/no/uuid-generator/) ([Markdown](https://acrafto.com/no/uuid-generator/index.md))
- Українська (uk): [Генератор UUID](https://acrafto.com/uk/henerator-uuid/) ([Markdown](https://acrafto.com/uk/henerator-uuid/index.md))
- Русский (ru): [Генератор UUID](https://acrafto.com/ru/generator-uuid/) ([Markdown](https://acrafto.com/ru/generator-uuid/index.md))
- Српски (sr): [UUID generator](https://acrafto.com/sr/uuid-generator/) ([Markdown](https://acrafto.com/sr/uuid-generator/index.md))
- Македонски (mk): [UUID генератор](https://acrafto.com/mk/uuid-generator/) ([Markdown](https://acrafto.com/mk/uuid-generator/index.md))
- Bosanski (bs): [Generator UUID-a](https://acrafto.com/bs/generator-uuid/) ([Markdown](https://acrafto.com/bs/generator-uuid/index.md))
- Türkçe (tr): [UUID oluşturucu](https://acrafto.com/tr/uuid-uretici/) ([Markdown](https://acrafto.com/tr/uuid-uretici/index.md))
- 日本語 (ja): [UUID生成ツール](https://acrafto.com/ja/uuid-generator/) ([Markdown](https://acrafto.com/ja/uuid-generator/index.md))
- 한국어 (ko): [UUID 생성기](https://acrafto.com/ko/uuid-generator/) ([Markdown](https://acrafto.com/ko/uuid-generator/index.md))
- العربية (ar): [مولد UUID](https://acrafto.com/ar/uuid-generator/) ([Markdown](https://acrafto.com/ar/uuid-generator/index.md))
- हिन्दी (hi): [UUID जनरेटर](https://acrafto.com/hi/uuid-generator/) ([Markdown](https://acrafto.com/hi/uuid-generator/index.md))
- Bahasa Indonesia (id): [Generator UUID](https://acrafto.com/id/generator-uuid/) ([Markdown](https://acrafto.com/id/generator-uuid/index.md))
- Tiếng Việt (vi): [Trình tạo UUID](https://acrafto.com/vi/uuid-generator/) ([Markdown](https://acrafto.com/vi/uuid-generator/index.md))
- ไทย (th): [สร้าง UUID](https://acrafto.com/th/uuid-generator/) ([Markdown](https://acrafto.com/th/uuid-generator/index.md))
- עברית (he): [מחולל UUID](https://acrafto.com/he/uuid-generator/) ([Markdown](https://acrafto.com/he/uuid-generator/index.md))
