Co to jest dekodowanie UUID?
Dekodowanie UUID to proces analizowania UUID w celu wyodrębnienia informacji o jego:
- Version: Która wersja UUID (1-8) na podstawie 4 bitów na pozycji 48-51
- Variant: Który wariant UUID (zwykle RFC 4122) na podstawie bitów 64-65
- Components: Wyodrębnianie znacznika czasu, identyfikatora węzła lub innych danych na podstawie wersji
- Czas generacji: Dla UUID opartych na czasie (v1, v6, v7)
Example: 123e4567-e89b-12d3-a456-426614174000
to UUID wersji 1 utworzony 2018-10-03 09:45:32 UTC.
Przegląd struktury UUID
Format | Description |
---|---|
8-4-4-4-12 | 32 cyfry szesnastkowe pogrupowane za pomocą myślników |
Bity wersji | Bity 48-51 (13. cyfra) |
Bity wariantu | Bity 64-65 (17. cyfra) |
Numer wersji pojawia się jako pierwsza cyfra szesnastkowa w trzeciej grupie (np., 123e4567-e89b-12d3-a456-426614174000
dla wersji 1).
Dekodowanie według wersji UUID
Version | Co można zdekodować |
---|---|
UUID v1 |
|
UUID v3/v5 |
|
UUID v4 |
|
UUID v6 |
|
UUID v7 |
|
ULID |
|
Wyodrębnianie znacznika czasu z UUID
Typ UUID | Metoda wyodrębniania czasu | Epoch |
---|---|---|
UUID v1 | Połącz bity 0-31, 32-47 i 48-59, zmieniając kolejność składników znacznika czasu | 15 października 1582 |
UUID v6 | Wyodrębnij bity 0-59 (już w poprawnej kolejności) | 15 października 1582 |
UUID v7 | Wyodrębnij bity 0-47 (milisekundy Unix) | 1 stycznia 1970 |
ULID | Zdekoduj pierwsze 10 znaków Base32, aby uzyskać 48-bitowe milisekundy Unix | 1 stycznia 1970 |
Zasady walidacji UUID
- Sprawdzenie formatu: 8-4-4-4-12 cyfr szesnastkowych z myślnikami
- Sprawdzenie wersji: 13. znak musi być w zakresie 1-8
- Sprawdzenie wariantu: 17. znak musi być 8, 9, A lub B (zgodnie z RFC 4122)
Wyrażenie regularne do podstawowej walidacji UUID:
^[0-9a-f]8-[0-9a-f]4-[1-8][0-9a-f]3-[89ab][0-9a-f]3-[0-9a-f]12$
Praktyczne zastosowania
- Analiza kryminalistyczna: Określanie, kiedy identyfikatory zostały utworzone
- Debugging: Śledzenie zachowania systemu przez znaczniki czasu w identyfikatorach
- Auditing: Walidacja integralności chronologicznej
- Analiza bezpieczeństwa: Wykrywanie sfałszowanych lub zmanipulowanych identyfikatorów
- Odzyskiwanie danych: Odtwarzanie relacji czasowych
- Migracje systemów: Zrozumienie szczegółów implementacji starszych UUID
Wyodrębnianie adresu MAC (v1/v6)
Dla UUID v1 i v6 często można wyodrębnić identyfikator węzła (adres MAC), jeśli nie był losowany podczas generowania:
- Wyodrębnij ostatnie 12 cyfr szesnastkowych (48 bitów) z UUID
- Format z dwukropkami jako XX:XX:XX:XX:XX:XX
- Sprawdź, czy adres MAC jest prawdziwy czy losowy, badając bit multicast
Jeśli pierwszy bajt ma ustawiony bit 0x01, prawdopodobnie jest to losowy identyfikator węzła, a nie rzeczywisty adres MAC.
Najczęściej zadawane pytania
Czy mogę dokładnie określić, kiedy UUID v4 został utworzony?
Nie. UUID v4 jest całkowicie losowy i nie zawiera informacji o czasie. Czas utworzenia nie może być określony na podstawie wartości UUID v4.
Jak dokładne są znaczniki czasu w UUID opartych na czasie?
Znaczniki czasu UUID v1/v6 mają precyzję 100 nanosekund. UUID v7 i ULID mają precyzję milisekundową. Jednak rzeczywista dokładność zegara systemowego może się różnić.
Czy mogę konwertować między wersjami UUID?
Nie, nie można bezpośrednio konwertować między wersjami, zachowując tę samą wartość identyfikatora. Różne wersje mają zasadniczo różne struktury.
Czy mogę zidentyfikować komputer, który wygenerował UUID v1?
Jeśli identyfikator węzła nie był losowany, UUID v1 może zawierać adres MAC systemu generującego. Jednak wiele nowoczesnych implementacji losuje go dla prywatności.
Jak mogę sprawdzić, czy UUID jest prawidłowy?
Sprawdź format (8-4-4-4-12 cyfr szesnastkowych), zweryfikuj cyfrę wersji (13. znak) czy jest w zakresie 1-8 oraz potwierdź bity wariantu (17. znak to 8, 9, A lub B dla UUID zgodnych z RFC 4122).