Utilia

ULID- og Nano ID-generator

Generér ULID'er (med monoton tilstand) eller Nano ID'er med eget alfabet og egen længde, afkod en ULID's tidsstempel, og tjek risikoen for kollision.

Type id

Afkod en ULID

Sådan genererer du ULID’er eller Nano ID’er

  1. Under Type id vælger du ULID (sorterbar) eller Nano ID (kort).
  2. Angiv Hvor mange (1 til 1.000). Ti id’er genereres, så snart siden indlæses.
  3. Til ULID’er lader du Monoton (strengt stigende) være afkrydset, så id’er, der oprettes i samme millisekund, stadig sorterer i rækkefølge, og sætter kryds ved Små bogstaver, hvis dit system foretrækker det.
  4. Til Nano ID’er vælger du et Alfabet (eller Brugerdefineret … og skriver dine egne tegn) og en Længde.
  5. Klik på Generér, og Kopiér derefter listen, eller vælg Download .txt (ét id pr. linje).

Vil du læse datoen, der er skjult i en ULID, så indsæt den under Afkod en ULID, eller klik på Afkod det første id. Værktøjet viser tidsstemplet i UTC (ISO 8601), i din lokale tid, som Unix-millisekunder og den tilfældige del på 80 bit i hex.

Hvad er en ULID?

En ULID (Universally Unique Lexicographically Sortable Identifier) er en identifikator på 128 bit, skrevet som 26 tegn i Crockford Base32, for eksempel 01ARZ3NDEKTSV4RRFFQ69G5FAV. De første 10 tegn koder et tidsstempel på 48 bit i millisekunder (nok til år 10889); de sidste 16 tegn er 80 tilfældige bit. Crockford Base32 udelader I, L, O og U for at undgå forveksling, og afkodningen skelner ikke mellem store og små bogstaver.

Fordi tiden står først, sorterer ULID’er alfabetisk i den rækkefølge, de er oprettet. Det gør dem velegnede som primærnøgler: nye rækker føjes til slutningen af et B-træ-indeks i stedet for at blive spredt som tilfældige UUID’er, og du kan sortere efter id i stedet for efter en særskilt datokolonne.

Monoton tilstand. Inden for ét millisekund ville tilfældige ULID’er sortere i tilfældig rækkefølge. Med den monotone indstilling følger værktøjet ULID-specifikationen: når flere id’er oprettes i samme millisekund, beholder det tidsstemplet og lægger 1 til den forrige tilfældige del. Hvis uret går baglæns, beholder det det sidste tidsstempel, så rækkefølgen aldrig falder.

Husk, at en ULID afslører, hvornår den blev oprettet. Brug ikke en, hvor den oplysning er følsom.

Hvad er et Nano ID?

Nano ID er en kompakt tilfældig identifikator. Standarden er 21 tegn fra et URL-sikkert alfabet med 64 tegn (A–Z a–z 0–9 _ -), hvilket giver 126 tilfældige bit, ligesom et UUID v4 (122 bit) i færre tegn. Du kan vælge hexadecimalt, kun cifre, små bogstaver og cifre, alfanumerisk, et sæt uden tegn, der ligner hinanden (ikke 0/O, 1/l/I, 5/S …), til koder, folk skriver ind, eller dit eget alfabet på 2 til 256 tegn. Gengangere i et brugerdefineret alfabet fjernes, fordi de ville gøre nogle tegn mere sandsynlige.

Hvert tegn trækkes med crypto.getRandomValues med afvisningsstikprøver, så der ikke er nogen modulo-skævhed.

Sandsynlighed for kollision

Panelet Sandsynlighed for kollision anvender fødselsdagsgrænsen. Med et alfabet af størrelse A og en længde L findes der N = A^L mulige id’er. Efter k id’er er sandsynligheden for mindst én dublet omkring 1 − e^(−k²/2N), så en risiko på 1 % nås efter k ≈ √(2N · ln(1/0,99)) id’er. Angiv Genererede id’er pr. time for at se, hvor lang tid det ville tage. Med standardindstillingerne og 1.000 id’er i timen tager en risiko på 1 % omkring 149 milliarder år; med 8 hexadecimale tegn tager det kun omkring 9.300 id’er.

Ofte stillede spørgsmål

ULID eller UUID?

Begge er 128 bit. En ULID er kortere at skrive (26 tegn i stedet for 36) og sorterer efter tid. UUID version 7 tilbyder nu den samme tidsordning i standardformatet for UUID, som databaser ofte gemmer indbygget. Vælg UUID v7, hvis din stak understøtter det, og ULID, hvis du vil have en kompakt, læselig streng.

Er ULID'er og Nano ID'er sikre nok til tokens?

Nano ID’er med standardalfabet og -længde har 126 tilfældige bit fra en kryptografisk generator, hvilket er nok til links, der ikke kan gættes. ULID’er har kun 80 tilfældige bit, og i monoton tilstand adskiller på hinanden følgende id’er sig med én, så brug ikke ULID’er som hemmeligheder.

Kan jeg forkorte et Nano ID?

Ja, men risikoen for kollision vokser meget hurtigt. Tjek værdien Id’er for 1 % chance for en dublet for din længde og dit alfabet, før du stoler på et kort id.

Hvorfor afviser afkoderen min ULID?

En ULID skal have præcis 26 tegn, kun bruge tegn fra Crockford Base32 og begynde med 0 til 7 (et større første tegn ville overskride 128 bit).

Bliver id'erne gemt eller sendt nogen steder hen?

Nej. De genereres i din browser og forsvinder, når du forlader siden.