Ce face acest generator de UUID
Pagina generează identificatori UUID v4 – şiruri aleatoare de 36 de caractere în formatul standard 8‑4‑4‑4‑12 hexazecimal. Utilizatorul controlează numărul de UUID-uri (de la 1 la 100) şi dacă acestea apar cu litere mari sau cu cratime. Identificatorii sunt produşi instantaneu în browser, folosind o sursă criptografică puternică de aleatorism. Un singur UUID sau toate odată pot fi copiate în clipboard.
Ce face această pagină diferită faţă de alternative
UUID v4 utilizează 122 de biţi de aleatorism fără niciun marcaj temporal încorporat. Fiecare valoare este practic imprevizibilă, iar probabilitatea de coliziune este neglijabilă. Spre deosebire de UUID v7 sau ULID, UUID-urile v4 se sortează arbitrar – nu transportă niciun fel de informaţie cronologică. Acest lucru fragmentează indecşii bazei de date atunci când sunt folosiţi ca chei primare. Pagina mai permite comutarea între litere mari şi mici, precum şi activarea/dezactivarea cratimelor, dar aleatorismul intern şi formatul rămân fixe. Implicit, ieşirea este cu litere mici şi cratime. Orice schimbare a unei opţiuni regenerază întregul set.
Inputuri şi outputuri
Inputuri:
- Format: UUID v4 (selectat dintr-o listă care mai include UUID v7, ULID şi NanoID – dar acest articol se concentrează exclusiv pe UUID v4).
- Count (număr): un număr întreg între 1 şi 100, inclusiv.
- Uppercase (majuscule): un comutator care afişează UUID-ul cu litere mari (implicit: fals).
- Include hyphens (include cratime): un comutator care decide dacă UUID-ul este afişat cu cratime în formatul 8‑4‑4‑4‑12 (implicit: adevărat).
Outputuri:
- Lista UUID-urilor generate: şiruri de caractere în format standard.
- Contorul de identificatori: numărul de UUID-uri afişat lângă listă.
- Mesaje de stare: „Ready.” (stare iniţială), „Generated.” (după generare) şi „Copied all!” (după copierea tuturor identificatorilor).
Reguli şi cazuri de margine
UUID v4 are 122 de biţi de aleatorism într-un format de 36 de caractere (32 de cifre hexazecimale plus 4 cratime, când cratimele sunt activate). Probabilitatea de coliziune este neglijabilă, dar valorile se sortează arbitrar – nu există o ordonare cronologică. Orice modificare a opţiunilor (număr, majuscule, cratime) declanşează imediat regenerarea identificatorilor. Numărul trebuie să fie cuprins între 1 şi 100; valorile din afara acestui interval nu sunt acceptate. Dând clic pe un UUID individual, acesta este copiat în clipboard. Butonul „Copy all” copiază toţi identificatorii afişaţi. Toată generarea are loc local în browser, folosind o sursă criptografică puternică; nimic nu este trimis către server. Dacă formatul este schimbat de la UUID v4 la altceva, opţiunile pentru majuscule şi cratime se pot modifica – însă prezenta fişă acoperă doar UUID v4.
Structura internă a unui UUID v4
Un UUID v4 este format din 16 octeţi (128 de biţi), dintre care 122 sunt randomizaţi, iar 6 sunt fixaţi conform specificaţiei RFC 4122. Cei 6 biţi fixaţi sunt:
- 4 biţi pentru versiune (valoarea 0100, adică 4) – plasaţi în cei mai semnificativi biţi ai celui de-al şaptelea octet.
- 2 biţi pentru varianta (10) – în primii doi biţi ai celui de-al nouălea octet.
Reprezentarea textuală standard este de 36 de caractere, grupate 8‑4‑4‑4‑12, cu cratime. De exemplu: 2c6e8c9a-3b1f-4d7e-9b2a-f5c8d1e3a4b0. Fără cratime, şirul are 32 de caractere hexazecimale. Cifrele hexazecimale sunt litere mici implicit, dar pot fi comutate la majuscule. Locaţiile celor 122 de biţi aleatori sunt distribuite în toţi octeţii, cu excepţia celor care conţin câmpurile fixe. Acest lucru asigură că orice generator care respectă standardul produce identificatori compatibili.
Calitatea aleatorismului şi probabilitatea de coliziune
Browserul foloseşte crypto.getRandomValues() – un PRNG criptografic (pseudorandom number generator) care îndeplineşte cerinţele de securitate ale specificaţiilor Web Cryptography API. Sursa de entropie este sistemul de operare, iar implementarea din fiecare browser este supusă unor teste riguroase. În practică, datele sunt suficient de imprevizibile pentru orice aplicaţie, inclusiv pentru token-uri de securitate sau ID-uri de sesiune.
Probabilitatea de coliziune la UUID v4 se calculează pe baza celor 122 de biţi aleatori. Conform analizei standard, pentru a avea o şansă de 50% de a produce cel puţin o coliziune, ar fi nevoie de aproximativ 2^61 de UUID-uri (circa 2,3 × 10^18). Pentru majoritatea aplicaţiilor practice, acest risc este neglijabil. Totuşi, coliziunile nu sunt imposibile matematic; de aceea, sistemele critice implementează verificări suplimentare (de exemplu, încercarea de inserare într-o bază de date până la succes).
Impactul asupra performanţei bazelor de date
Folosirea UUID v4 ca cheie primară într-o bază de date relaţională (de exemplu, în indecşi B-tree) duce la fragmentare şi degradare a performanţei la inserţii. Deoarece valorile sunt arbitrare, noile UUID-uri nu sunt inserate la sfârşitul indecsului, ci în poziţii aleatoare. Acest lucru forţa rebalansări frecvente ale paginilor şi creşte rata de „page split”. În schimb, un identificator temporal (precum UUID v7 sau ULID) poate fi inserat secvenţial, menţinând indecşii compacti. Pentru baze de date cu volume mari de înregistrări şi inserţii frecvente, acest aspect poate fi critic. Administatorii de baze de date care aleg UUID v4 trebuie să cunoască acest compromis: coliziuni aproape imposibile versus performanţă slabă la scale mari. Alternativ, se poate folosi UUID v7 (bazat pe timestamp) sau un câmp suplimentar de dată pentru clustering.
Comparaţie cu identificatori temporali
| Caracteristică | UUID v4 | UUID v7 | ULID |
|---|---|---|---|
| Sursă de aleatorism | 122 biţi random | 62 biţi random + 48 biţi timestamp | 80 biţi random + 48 biţi timestamp |
| Ordonare cronologică | Nu | Da (crescător după timestamp) | Da (crescător) |
| Adecvare pentru chei primare | Nu (fragmentează indecşii) | Da (sortabile) | Da (sortabile) |
| Lungime (cu cratime) | 36 | 36 | 26 (fără cratime) |
| Caz de utilizare tipic | Token-uri, ID-uri de sesiune, identităţi externe | Chei primare, ID-uri de înregistrări | Chei primare, ID-uri ordonate temporal |
Pentru aplicaţii care necesită imprevizibilitate maximă (de exemplu, ID-uri de sesiune securizate sau token-uri de resetare a parolei), UUID v4 rămâne alegerea standard. Pentru înregistrări care trebuie interogate în ordinea inserării, UUID v7 sau ULID sunt preferate.
Cum lucrează comutatoarele de litere mari şi cratime
Comutatorul uppercase transformă toate literele hexazecimale în majuscule (A–F). Aceasta nu schimbă valoarea numerică a UUID-ului, ci doar reprezentarea sa textuală. Unele sisteme (de exemplu, API-uri REST care returnează UUID-uri) preferă majusculele pentru claritate sau consistenţă cu alte identificatoare. Comutatorul include hyphens activează/dezactivează cratimele; fără cratime, UUID-ul este o singură frază de 32 de caractere hexazecimale. Aceasta poate fi utilă când se doreşte compactitate (de exemplu, în URL-uri sau nume de fişiere). Reţineţi: standardul RFC 4122 cere cratimele în reprezentarea canonică, dar multe biblioteci acceptă şi forma fără cratime.
Generarea locală şi implicaţiile pentru confidenţialitate
Toată generarea se face în browser, fără a trimite date către server. Aceasta are mai multe consecinţe:
- Securitate: Nu există nicio posibilitate ca un server să intercepteze identificatorii generaţi.
- Disponibilitate offline: Pagina funcţionează chiar şi fără conexiune la internet (după încărcarea iniţială, dacă resursele sunt încacheate).
- Viteză: Nu există latenţă de reţea; generarea este instantanee chiar şi pentru 100 de UUID-uri.
- Transparenţă: Utilizatorul nu trebuie să aibă încredere într-un serviciu extern – tot codul se execută local.
Această abordare este standard pentru instrumente simple, dar este crucială atunci când UUID-urile sunt folosite în contexte sensibile (de exemplu, generarea de token-uri pentru autentificare).
Întrebări frecvente (FAQ)
1. Pot genera mai mult de 100 de UUID-uri o dată?
Nu. Limita superioară a câmpului Count este 100. Dacă aveţi nevoie de mai multe, puteţi repeta generarea.
2. UUID-urile generate sunt cu adevărat aleatoare?
Da, folosind crypto.getRandomValues() din browser, care oferă o sursă criptografică puternică de aleatorism. Calitatea este suficientă pentru token-uri de securitate.
3. De ce UUID v4 nu poate fi sortat cronologic?
Pentru că nu conţine niciun câmp de timestamp. Toţi cei 122 de biţi aleatori sunt independenţi de momentul generării. În schimb, UUID v7 şi ULID încorporează data şi ora.
4. Am genera 100 de UUID-uri. Care este probabilitatea ca două să fie identice?
Neglijabilă. Pentru a atinge o probabilitate de 50% de coliziune, ar trebui să generaţi aproximativ 2.3 × 10^18 UUID-uri. Cu 100 de UUID-uri, riscul este sub 10^-35.
5. Pot copia doar un UUID, nu toată lista?
Da. Dând clic pe orice UUID individual, acesta este copiat instantaneu în clipboard. Butonul „Copy all” copiază întreaga listă (separată prin linii noi).
6. Ce se întâmplă dacă dezactivez cratimele – mai este valabil UUID-ul?
Da, valoarea numerică rămâne aceeaşi. Unele sisteme acceptă UUID-uri fără cratime, deşi forma canonică le include. Asiguraţi-vă că aplicaţia destinatară poate interpreta şirul de 32 de caractere hexazecimale.
Acest instrument oferă o modalitate rapidă, sigură şi complet locală de a genera UUID-uri v4, cu opţiuni de personalizare a formatului. Înţelegerea structurii, a limitelor şi a compromisurilor legate de ordonare vă ajută să alegeţi momentul potrivit pentru a folosi UUID v4 faţă de alternativele temporale.