Dekoder UUID i ekstraktor znaczników czasu

Dekoduj znaczniki czasu UUID v1, v6 i v7 jako ISO UTC i czas Unix, a następnie sprawdź wersję i metadane.

Wypróbuj te przykłady:

Czym jest dekodowanie UUID?

dekodowanie UUID to proces analizowania UUID w celu wydobycia informacji o:

  • Version: Która wersja UUID (1–8) na podstawie 4 bitów w pozycji 48–51
  • Variant: Który wariant UUID (zazwyczaj RFC 4122) na podstawie bitów 64–65
  • Components: Wydobywanie znacznika czasu, identyfikatora węzła lub innych danych w zależności od wersji
  • Czas wygenerowania: Dla UUID opartych na czasie (v1, v6, v7)

Example: 123e4567-e89b-12d3-a456-426614174000 to UUID Wersji 1 z znacznikiem czasu 2228-06-25T20:01:28.545Z przy pokazaniu z precyzją milisekundową JavaScript.

Przegląd struktury UUID

FormatDescription
8-4-4-4-1232 cyfry szesnastkowe pogrupowane z myślnikami
Bity wersjiBity 48–51 (13. cyfra)
Bity wariantuBity 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

VersionCo można zdekodować
UUID v1
  • Znacznik czasu (z dokładnością do 100 ns, od 15 października 1582)
  • Adres MAC (jeśli nie został zrandomizowany)
  • Sekwencja zegara (dla uniknięcia kolizji)
UUID v3/v5
  • Przestrzeni nazw i nazwy nie da się odzyskać z hashu
  • Można go odtworzyć tylko gdy znane są zarówno przestrzeń nazw, jak i nazwa
  • Pozwala odróżnić v3 (MD5) od v5 (SHA-1)
UUID v4
  • Tylko dane losowe
  • Brak wyodrębnialnych informacji
  • Można zweryfikować, że jest to prawidłowy UUID v4
UUID v6
  • Znacznik czasu (z dokładnością do 100 ns, od 15 października 1582)
  • Adres MAC (jeśli nie został zrandomizowany)
  • Sekwencja zegara (dla uniknięcia kolizji)
UUID v7
  • Znacznik czasu Unix (dokładność milisekundowa)
  • Składnik losowy (niepodlegający dekodowaniu)

Wydobywanie znacznika czasu z UUID

Typ UUIDMetoda wydobywania czasuEpoch
UUID v1Połącz bity 0–31, 32–47 i 48–59, przemieszczając składniki znacznika czasu15 października 1582
UUID v6Połącz bity 0–47 z bitami 52–63; bity 48–51 to wersja i są wyłączone15 października 1582
UUID v7Wyodrębnij bity 0–47 (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ć 1–8
  • Sprawdzenie wariantu: 17. znak musi być 8, 9, A lub B (dla 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}$

Przykład znacznika czasu UUID v7

017f22e2-79b0-7cc3-98c4-dc0c0c07398f to wektor testowy RFC 9562 dla UUIDv7. Jego pierwsze 48 bitów to milisekundy Unix, które dekodują się do 2022-02-22T19:22:22.000Z, 1645557742000 milisekundy, lub 1645557742 seconds.

Wygeneruj nowy UUID v7, lub kontynuuj z Konwerter znacznika czasu Unix. Te linki nie zawierają UUID, który wpisałeś.

Praktyczne zastosowania

  • Analiza kryminalistyczna: Określanie, kiedy utworzono identyfikatory
  • Debugging: Śledzenie zachowania systemu poprzez znaczniki czasu w ID
  • Auditing: Weryfikacja integralności chronologicznej
  • Kontrole formatu: Wykrywanie niepoprawnych ID; prawidłowy UUID nie dowodzi autentyczności
  • Odzyskiwanie danych: Odtwarzanie relacji czasowych
  • Migracje systemów: Zrozumienie szczegółów implementacji starszych UUID

Wydobywanie adresu MAC (v1/v6)

Dla UUID v1 i v6 często można wydobyć identyfikator węzła (adres MAC), jeśli nie został zrandomizowany podczas generowania:

  1. Wyodrębnij ostatnie 12 cyfr szesnastkowych (48 bitów) z UUID
  2. Sformatuj z dwukropkami jako XX:XX:XX:XX:XX:XX
  3. Sprawdź, czy adres MAC jest prawdziwy czy losowy, badając bit multicast

Jeśli w pierwszym bajcie jest ustawiony bit 0x01, prawdopodobnie jest to zrandomizowany identyfikator węzła, a nie rzeczywisty adres MAC.

Najczęściej zadawane pytania

Czy mogę dokładnie określić, kiedy utworzono UUID v4?

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?

UUID v1/v6 mają znaczniki czasu z dokładnością do 100 nanosekund. UUID v7 ma dokładność 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 ten sam identyfikator. Różne wersje mają zasadniczo różne struktury.

Czy mogę zidentyfikować komputer, który wygenerował UUID v1?

Jeśli identyfikator węzła nie został zrandomizowany, UUID v1 może zawierać adres MAC systemu, który go wygenerował. Jednak wiele współczesnych implementacji randomizuje to dla prywatności.

Jak mogę stwierdzić, czy UUID jest prawidłowy?

Sprawdź format (8-4-4-4-12 cyfr szesnastkowych), zweryfikuj cyfrę wersji (13. znak) czy jest 1–8 oraz potwierdź bity wariantu (17. znak to 8, 9, A lub B dla UUID zgodnych z RFC 4122).

Resources