Generowanie losowych wartości UUID v4
UUID w wersji 4 to 128-bitowa wartość, w której 122 bity pochodzą z kryptograficznie bezpiecznego źródła losowości. Pozostałe 6 bitów oznacza wersję i wariant RFC, dlatego trzecia grupa każdego UUID v4 zaczyna się od 4.
Przykład krok po kroku
- Losowe bajty wejściowe
- 9d 41 7c 02 e8 5b 13 f6 2a 7e c1 94 06 d3 b8 5f
- Wynik
- 9d417c02-e85b-43f6-aa7e-c19406d3b85f
| Wygenerowane UUID | Prawdopodobieństwo co najmniej jednego duplikatu |
|---|---|
| 10⁶ | ≈ 9,4 × 10⁻²⁶ |
| 10⁹ | ≈ 9,4 × 10⁻²⁰ |
| 10¹² | ≈ 9,4 × 10⁻¹⁴ |
| 10¹⁵ | ≈ 9,4 × 10⁻⁸ |
Liczba UUID dla 50% szans na duplikat: ≈ 2,71 × 10¹⁸
Jak to działa
- Generator wypełnia 16 bajtów bezpiecznymi danymi losowymi, a następnie ustawia starszą połówkę bajtu 6 na 4 (wersja) i dwa najstarsze bity bajtu 8 na 10 (wariant). Dlatego trzecia grupa zaczyna się od 4, a czwarta od 8, 9, a lub b.
- Przy 2¹²² możliwych wartościach przybliżenie paradoksu urodzin p ≈ 1 − e^(−n²/2¹²³) podaje prawdopodobieństwo, że n losowych UUID zawiera co najmniej jeden duplikat.
- UUID v4 nie ujawnia znacznika czasu ani danych o sprzęcie. Traktuj go jako identyfikator, a nie hasło czy sekret uwierzytelniający.
Wygeneruj od 1 do 100 UUID na raz
O UUID
UUID v1: UUID oparte na czasie, które zawierają znacznik czasu i adres MAC komputera generującego UUID. Przydatne, gdy musisz wiedzieć, kiedy UUID został utworzony.
UUID v4: Losowo generowane UUID. Jest to najczęściej używana wersja i zapewnia dobrą unikalność przy minimalnym wyciekaniu informacji.
UUID v5: UUID oparte na nazwie przy użyciu haszowania SHA-1. Przy tej samej przestrzeni nazw i nazwie zawsze otrzymasz ten sam UUID. Przydatne do deterministycznego generowania UUID.