Decodificatore UUID e Estrattore di Timestamp

Decodifica i timestamp di UUID v1, v6 e v7 come ISO UTC e tempo Unix, quindi ispeziona versione e metadata.

Prova questi esempi:

Cos'è la decodifica di 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 nella posizione 48-51
  • Variant: Quale variante di UUID (di solito RFC 4122) basata sui bit 64-65
  • Components: Estrazione di timestamp, node ID 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 con il timestamp 2228-06-25T20:01:28.545Z quando mostrato con la precisione in millisecondi di JavaScript.

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 (per esempio, 123e4567-e89b-12d3-a456-426614174000 per la versione 1).

Decodifica per versione UUID

VersionCosa può essere decodificato
UUID v1
  • Timestamp (con precisione di 100 ns, dal 15 ottobre 1582)
  • Indirizzo MAC (se non randomizzato)
  • Sequenza dell'orologio (per evitare collisioni)
UUID v3/v5
  • Il namespace e il name non possono essere recuperati dall'hash
  • Può essere rigenerato solo quando sia il namespace che il name sono noti
  • Consente di distinguere v3 (MD5) da 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 100 ns, dal 15 ottobre 1582)
  • Indirizzo MAC (se non randomizzato)
  • Sequenza dell'orologio (per evitare collisioni)
UUID v7
  • Timestamp Unix (precisione millisecondi)
  • 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 v6Combinare i bit 0-47 con i bit 52-63; i bit 48-51 sono la versione e sono esclusi15 ottobre 1582
UUID v7Estrarre i bit 0-47 (millisecondi Unix)1 gennaio 1970

Regole di validazione UUID

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

Espressione regolare per la validazione base di un UUID:

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

Esempio di timestamp UUID v7

017f22e2-79b0-7cc3-98c4-dc0c0c07398f è il vettore di test RFC 9562 per UUIDv7. I suoi primi 48 bit sono millisecondi Unix, che decodificano in 2022-02-22T19:22:22.000Z, 1645557742000 millisecondi, o 1645557742 seconds.

Genera un nuovo UUID v7, o continua con il Convertitore di timestamp Unix. Questi link non includono l'UUID che hai inserito.

Applicazioni pratiche

  • Analisi forense: Determinare quando sono stati creati gli ID
  • Debugging: Tracciare il comportamento del sistema attraverso i timestamp degli ID
  • Auditing: Validare l'integrità cronologica
  • Controlli di formato: Rilevare ID malformati; un UUID valido non prova l'autenticità
  • Recupero dati: Ricostruire relazioni temporali
  • Migrazioni di sistema: Comprendere i dettagli delle implementazioni 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 gli ultimi 12 caratteri esadecimali (48 bit) dall'UUID
  2. Formattare con due punti come XX:XX:XX:XX:XX:XX
  3. Verificare se l'indirizzo MAC è reale o casuale esaminando il bit multicast

Se nel primo byte il bit 0x01 è impostato, è probabile che si tratti di un node ID randomizzato piuttosto che di un vero indirizzo MAC.

Domande frequenti

Posso determinare esattamente quando è stato creato un UUID v4?

No. UUID v4 è puramente casuale e non contiene informazioni di timestamp. Il momento della creazione non può essere determinato dal valore di un UUID v4.

Quanto sono accurate le timestamp negli UUID basati sul tempo?

Gli UUID v1/v6 hanno timestamp con precisione di 100 nanosecondi. UUID v7 ha precisione millisecondi. Tuttavia, l'accuratezza effettiva dell'orologio di sistema può variare.

Posso convertire tra versioni di UUID?

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

Posso identificare il computer che ha generato un UUID v1?

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

Come posso capire se un UUID è valido?

Controlla il formato (8-4-4-4-12 cifre esadecimali), verifica che la cifra della versione (13ª) sia 1-8 e conferma i bit della variante (la 17ª cifra è 8, 9, A o B per gli UUID RFC 4122).

Resources