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
| 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 (per 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 |
|
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 | Combinare i bit 0-47 con i bit 52-63; i bit 48-51 sono la versione e sono esclusi | 15 ottobre 1582 |
| UUID v7 | Estrarre 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:
- Estrarre gli ultimi 12 caratteri esadecimali (48 bit) dall'UUID
- Formattare con due punti come XX:XX:XX:XX:XX:XX
- 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).