Decoder e Validatore UUID

Decodifica e convalida UUID per estrarre versione, timestamp e metadati

Prova questi esempi:

Cos'è la decodifica UUID?

Decodifica UUID è il processo di analisi di un UUID per estrarre informazioni su:

  • Version: Quale versione di UUID (1-8) basata su 4 bit nelle posizioni 48-51
  • Variant: Quale variante di UUID (di solito RFC 4122) basata sui bit 64-65
  • Components: Estrazione di timestamp, ID nodo o altri dati basati sulla versione
  • Tempo di generazione: Per UUID basati sul tempo (v1, v6, v7)

Example: 123e4567-e89b-12d3-a456-426614174000 è un UUID Versione 1 creato il 2018-10-03 09:45:32 UTC.

Panoramica della struttura UUID

FormatDescription
8-4-4-4-1232 cifre esadecimali raggruppate con trattini
Bit della versioneBit 48-51 (13° cifra)
Bit della varianteBit 64-65 (17° cifra)

Il numero di versione appare come la prima cifra esadecimale nel terzo gruppo (ad esempio, 123e4567-e89b-12d3-a456-426614174000 per la versione 1).

Decodifica per versione UUID

VersionCosa può essere decodificato
UUID v1
  • Timestamp (con precisione di 100ns, dal 15 ottobre 1582)
  • Indirizzo MAC (se non randomizzato)
  • Sequenza dell'orologio (per evitare collisioni)
UUID v3/v5
  • Impossibile decodificare l'input originale
  • Può verificare se creato da input noti
  • Può distinguere tra v3 (MD5) e v5 (SHA-1)
UUID v4
  • Solo dati casuali
  • Nessuna informazione estraibile
  • Può verificare che sia un UUID v4 valido
UUID v6
  • Timestamp (con precisione di 100ns, dal 15 ottobre 1582)
  • Indirizzo MAC (se non randomizzato)
  • Sequenza dell'orologio (per evitare collisioni)
UUID v7
  • Timestamp Unix (precisione al millisecondo)
  • Componente casuale (non decodificabile)
ULID
  • Timestamp Unix (precisione al millisecondo)
  • Componente casuale (non decodificabile)

Estrazione del timestamp dagli UUID

Tipo di UUIDMetodo di estrazione del tempoEpoch
UUID v1Combinare i bit 0-31, 32-47 e 48-59, riordinando i componenti del timestamp15 ottobre 1582
UUID v6Estrarre i bit 0-59 (già nell'ordine corretto)15 ottobre 1582
UUID v7Estrarre i bit 0-47 (millisecondi Unix)1 gennaio 1970
ULIDDecodificare i primi 10 caratteri Base32 per ottenere i millisecondi Unix a 48 bit1 gennaio 1970

Regole di convalida UUID

  • Controllo del formato: 8-4-4-4-12 cifre esadecimali con trattini
  • Controllo della versione: Il 13° carattere deve essere da 1 a 8
  • Controllo della variante: Il 17° carattere deve essere 8, 9, A o B (per RFC 4122)

Espressione regolare per la convalida di base di UUID:

^[0-9a-f]8-[0-9a-f]4-[1-8][0-9a-f]3-[89ab][0-9a-f]3-[0-9a-f]12$

Applicazioni pratiche

  • Analisi forense: Determinare quando sono stati creati gli ID
  • Debugging: Tracciare il comportamento del sistema tramite i timestamp degli ID
  • Auditing: Convalidare l'integrità cronologica
  • Analisi della sicurezza: Rilevamento di ID contraffatti o manipolati
  • Recupero dati: Ricostruzione delle relazioni temporali
  • Migrazioni di sistema: Comprendere i dettagli dell'implementazione legacy di UUID

Estrazione dell'indirizzo MAC (v1/v6)

Per UUID v1 e v6, spesso è possibile estrarre l'identificatore del nodo (indirizzo MAC) se non è stato randomizzato durante la generazione:

  1. Estrarre le ultime 12 cifre esadecimali (48 bit) dall'UUID
  2. Formato con due punti come XX:XX:XX:XX:XX:XX
  3. Verificare se l'indirizzo MAC è reale o casuale esaminando il bit multicast

Se il primo byte ha il bit 0x01 impostato, probabilmente è un ID nodo randomizzato piuttosto che un vero indirizzo MAC.

Domande frequenti

Posso determinare esattamente quando è stato creato un UUID v4?

No. UUID v4 è puramente casuale senza informazioni sul timestamp. Il momento della creazione non può essere determinato da un valore UUID v4.

Quanto sono precisi i timestamp negli UUID basati sul tempo?

I timestamp di UUID v1/v6 hanno una precisione di 100 nanosecondi. UUID v7 e ULID hanno precisione al millisecondo. Tuttavia, la precisione reale dell'orologio di sistema può variare.

Posso convertire tra versioni di UUID?

No, non è possibile convertire direttamente tra versioni mantenendo lo stesso valore identificativo. Le diverse versioni hanno strutture fondamentalmente diverse.

Posso identificare il computer che ha generato un UUID v1?

Se l'ID nodo non è stato randomizzato, un UUID v1 può contenere l'indirizzo MAC del sistema generatore. Tuttavia, molte implementazioni moderne randomizzano questo per motivi di privacy.

Come posso sapere se un UUID è valido?

Verificare il formato (8-4-4-4-12 cifre esadecimali), controllare che la cifra della versione (13° carattere) sia da 1 a 8 e confermare i bit della variante (17° carattere è 8, 9, A o B per UUID RFC 4122).

Resources