Generator UUID
Un instrument profesional de generare și validare UUID, care suportă mai multe versiuni UUID, inclusiv v1 (timp de marcaj), v4 (aleatoriu), v5 (bazat pe nume) și v7 (timp Unix + aleatoriu). Oferă generare în loturi cu număr personalizabil, opțiuni flexibile de formatare, inclusiv conversie în majuscule, eliminarea cratimalor și adăugarea de acolade. Include un validator UUID integrat cu detectare versiune și oferă exemple de cod multilingve. Potrivit pentru identificarea înregistrărilor din baze de date, urmărirea jurnalelor, interfețe între sisteme și alte scenarii. Toate operațiunile sunt efectuate local în browser-ul dumneavoastră, asigurând confidențialitate și securitate.
Ghid de utilizare
Caracteristici
- Suportă UUID v1, v4, v5 și v7
- Generare în loturi cu număr personalizabil
- Formatare flexibilă: majuscule, eliminare cratime, adăugare acolade
- Validator încorporat cu detectare automată a versiunii
- Suport complet de internaționalizare și mai multe teme
Ce este un UUID?
UUID-urile sunt identificatori de 128 biți, reprezentați de obicei ca șiruri de 36 de caractere cu cratime.
UUID v1: Bazat pe timpul de marcaj și adresa MAC; ordonat în funcție de timp, dar poate dezvălui informații despre momentul generării sau locație.
UUID v4: Generat aleatoriu; cel mai utilizat, oferind unicitate și confidențialitate puternice.
UUID v7: Bazat pe milisecunde Unix + biți aleatorii; sortabil natural și evită problemele de confidențialitate ale versiunii v1.
UUID v5: Generat determinist dintr-un UUID de spațiu de nume și un nume folosind SHA-1; aceleași intrări produc întotdeauna același rezultat.
UUID Scenarii de utilizare comune
- Identificatori unici pentru înregistrări de bază de date sau resurse
- Identificatori de urmărire pentru înregistrare și urmărirea evenimentelor
- Identificatori publici imprevizibili
- Identificatori constanți în integrările de sistem
UUID Întrebări frecvente și capcane
- v1 și confidențialitate: v1 poate expune marcaje de timp sau locații hardware; alegeți v4 pentru cazuri de sensibile la confidențialitate.
- Sensibilitate la majuscule/minuscule: potrivirea UUID nu ține cont de acestea.
- Cratimele sunt doar pentru lizibilitate; păstrați-le dacă sistemele moștenite nu impun restricții.
- Formatul cu acolade (ex: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}) este acceptat în unele medii (ex: Windows Registry).
- v5 este determinist: același spațiu de nume + nume => același UUID. Ideal pentru operații idempotente; evitați-l când este necesară imprevizibilitatea.
Cum se folosesc UUID-uri în limbaje de programare
// UUID v4 (simple)
function uuidv4(){
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
const r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
const id = uuidv4();
// UUID v7 (Unix ms + randomness)
function uuidv7(){
const cryptoObj = (globalThis.crypto || globalThis.msCrypto);
const rb = n => { const a = new Uint8Array(n); cryptoObj?.getRandomValues ? cryptoObj.getRandomValues(a) : a.forEach((_,i)=>a[i]=Math.random()*256|0); return a; };
const hex = b => Array.from(b).map(x=>x.toString(16).padStart(2,'0')).join('');
const ts = BigInt(Date.now()).toString(16).padStart(12,'0');
const ver = rb(2); ver[0] = (ver[0] & 0x0f) | 0x70; // set version 7
const vrn = rb(2); vrn[0] = (vrn[0] & 0x3f) | 0x80; // RFC4122 variant
const tail = rb(6);
return `${ts.slice(0,8)}-${ts.slice(8,12)}-${hex(ver)}-${hex(vrn)}-${hex(tail)}`;
}
const id7 = uuidv7();
const re=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-57][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
re.test(id); // true/false
<?php
// v4 using random_bytes
function uuidv4(){
$data = random_bytes(16);
$data[6] = chr((ord($data[6]) & 0x0f) | 0x40);
$data[8] = chr((ord($data[8]) & 0x3f) | 0x80);
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
$id = uuidv4();
<?php
// composer require ramsey/uuid:^4.7
use Ramsey\Uuid\Uuid;
$uuid7 = Uuid::uuid7();
<?php
$re = '/^[0-9a-f]{8}-[0-9a-f]{4}-[1-57][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i';
preg_match($re, $id) === 1; // true/false
import uuid
# v4
uid = uuid.uuid4()
# v1
uid1 = uuid.uuid1()
# pip install uuid6
from uuid6 import uuid7
uid7 = uuid7()
import re
re_uuid = re.compile(r'^[0-9a-f]{8}-[0-9a-f]{4}-[1-57][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', re.I)
bool(re_uuid.match(str(uid)))
// go get github.com/google/uuid
import "github.com/google/uuid"
id := uuid.New() // v4
id1 := uuid.NewUUID() // v1 (may return error)
// go get github.com/gofrs/uuid/v5
import (
uuid "github.com/gofrs/uuid/v5"
)
id7, err := uuid.NewV7()
import "github.com/google/uuid"
_, err := uuid.Parse(id.String()) // err == nil means valid
// Cargo.toml: uuid = { version = "1", features = ["v4", "v1"] }
use uuid::Uuid;
let v4 = Uuid::new_v4();
// v1 requires a context/ts, often via external crate; shown for completeness
// Cargo.toml: uuid = { version = "1", features = ["v7"] }
use uuid::Uuid;
let v7 = Uuid::now_v7();
use uuid::Uuid;
let ok = Uuid::parse_str(v4.to_string().as_str()).is_ok();
import java.util.UUID;
UUID id = UUID.randomUUID(); // v4
// Maven: com.github.f4b6a3:uuid-creator
import com.github.f4b6a3.uuid.UuidCreator;
UUID v7 = UuidCreator.getTimeOrderedEpoch(); // UUIDv7
import java.util.UUID;
try { UUID.fromString(id.toString()); /* valid */ } catch (IllegalArgumentException ex) { /* invalid */ }