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
Format | Description |
---|---|
8-4-4-4-12 | 32 cifre esadecimali raggruppate con trattini |
Bit della versione | Bit 48-51 (13° cifra) |
Bit della variante | Bit 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
Version | Cosa può essere decodificato |
---|---|
UUID v1 |
|
UUID v3/v5 |
|
UUID v4 |
|
UUID v6 |
|
UUID v7 |
|
ULID |
|
Estrazione del timestamp dagli UUID
Tipo di UUID | Metodo di estrazione del tempo | Epoch |
---|---|---|
UUID v1 | Combinare i bit 0-31, 32-47 e 48-59, riordinando i componenti del timestamp | 15 ottobre 1582 |
UUID v6 | Estrarre i bit 0-59 (già nell'ordine corretto) | 15 ottobre 1582 |
UUID v7 | Estrarre i bit 0-47 (millisecondi Unix) | 1 gennaio 1970 |
ULID | Decodificare i primi 10 caratteri Base32 per ottenere i millisecondi Unix a 48 bit | 1 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:
- Estrarre le ultime 12 cifre esadecimali (48 bit) dall'UUID
- Formato con due punti come XX:XX:XX:XX:XX:XX
- 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).