Utilia

ULID at Nano ID Generator

Gumawa ng mga ULID (may monotonic na opsyon) o Nano ID na may custom na alphabet at haba, i-decode ang timestamp ng ULID at suriin ang panganib ng collision.

Uri ng ID

I-decode ang ULID

Paano gumawa ng ULID o Nano ID

  1. Sa Uri ng ID, piliin ang ULID (nasusunud-sunod) o Nano ID (maikli).
  2. Itakda ang Ilan (1 hanggang 1,000). Sampung ID ang nagagawa agad pag-load ng page.
  3. Para sa mga ULID, panatilihing naka-check ang Monotonic (mahigpit na tumataas) para magkasunud-sunod pa rin ang mga ID na ginawa sa iisang millisecond, at i-tick ang Maliliit na titik kung iyon ang gusto ng sistema mo.
  4. Para sa mga Nano ID, pumili ng Alphabet (o Custom… at i-type ang sarili mong mga karakter) at Haba.
  5. I-click ang Gumawa, pagkatapos ay Kopyahin ang listahan o I-download ang .txt (isang ID bawat linya).

Para basahin ang petsang nakatago sa ULID, i-paste ito sa I-decode ang ULID o i-click ang I-decode ang unang ID. Ipinapakita ng tool ang timestamp sa UTC (ISO 8601), sa lokal na oras, bilang Unix millisecond, at ang 80-bit na random na bahagi sa hex.

Ano ang ULID?

Ang ULID (Universally Unique Lexicographically Sortable Identifier) ay 128-bit na identifier na isinusulat bilang 26 na karakter ng Crockford Base32, halimbawa 01ARZ3NDEKTSV4RRFFQ69G5FAV. Ang unang 10 karakter ay nag-e-encode ng 48-bit na timestamp sa millisecond (sapat hanggang taong 10889); ang huling 16 na karakter ay 80 random na bit. Hindi isinasama ng Crockford Base32 ang I, L, O at U para maiwasan ang kalituhan, at hindi case-sensitive ang pag-decode.

Dahil nauuna ang oras, nasusunud-sunod nang alpabetiko ang mga ULID ayon sa pagkakagawa. Kaya magandang primary key ang mga ito: idinadagdag sa dulo ng B-tree index ang mga bagong row sa halip na nakakalat gaya ng mga random na UUID, at puwede kang mag-sort ayon sa ID sa halip na sa hiwalay na column ng petsa.

Monotonic mode. Sa loob ng isang millisecond, random ang pagkakasunod-sunod ng mga random na ULID. Sa monotonic na opsyon, sinusunod ng tool ang ULID specification: kapag maraming ID ang ginawa sa iisang millisecond, pinapanatili nito ang timestamp at nagdaragdag ng 1 sa nakaraang random na bahagi. Kung bumalik ang orasan, pinapanatili nito ang huling timestamp, kaya hindi kailanman bumababa ang sunod-sunod.

Tandaan na ibinubunyag ng ULID kung kailan ito ginawa. Huwag gumamit nito kung sensitibo ang impormasyong iyon.

Ano ang Nano ID?

Ang Nano ID ay compact na random na identifier. Ang default ay 21 karakter mula sa 64-karakter na URL-safe na alphabet (A–Z a–z 0–9 _ -), na nagbibigay ng 126 random na bit, katulad ng UUID v4 (122 bit) sa mas kaunting karakter. Puwede kang pumili ng hexadecimal, digit lang, maliliit na titik at digit, alphanumeric, set na walang magkakamukhang karakter (walang 0/O, 1/l/I, 5/S…) para sa mga code na tina-type ng tao, o sarili mong alphabet na 2 hanggang 256 karakter. Inaalis ang mga dobleng karakter sa custom na alphabet, dahil gagawin nilang mas malamang lumabas ang ilang karakter.

Bawat karakter ay kinukuha gamit ang crypto.getRandomValues na may rejection sampling, kaya walang modulo bias.

Posibilidad ng collision

Inilalapat ng panel na Posibilidad ng collision ang birthday bound. Sa alphabet na may laking A at haba na L, may N = A^L na posibleng ID. Pagkatapos ng k na ID, ang tsansa ng kahit isang duplicate ay humigit-kumulang 1 − e^(−k²/2N), kaya naaabot ang 1% na panganib pagkatapos ng k ≈ √(2N · ln(1/0.99)) na ID. Ilagay ang Mga ID na nagagawa kada oras para makita kung gaano katagal iyon. Sa mga default na setting at 1,000 ID kada oras, aabutin ng humigit-kumulang 149 bilyong taon ang 1% na panganib; sa 8 hexadecimal na karakter, humigit-kumulang 9,300 ID lang.

Mga madalas itanong

ULID o UUID?

Parehong 128 bit. Mas maikling isulat ang ULID (26 na karakter sa halip na 36) at nasusunod ayon sa oras. Nag-aalok na ngayon ang UUID version 7 ng parehong pag-aayos ayon sa oras sa karaniwang format ng UUID, na madalas na native na iniimbak ng mga database. Piliin ang UUID v7 kung sinusuportahan ng stack mo, ULID kung gusto mo ng compact at nababasang string.

Sapat bang secure ang mga ULID at Nano ID para sa mga token?

Ang mga Nano ID na may default na alphabet at haba ay may 126 random na bit mula sa cryptographic generator, na sapat para sa mga link na hindi mahuhulaan. Ang mga ULID ay may 80 random na bit lang, at sa monotonic mode ay isa lang ang pagkakaiba ng magkakasunod na ID, kaya huwag gumamit ng mga ULID bilang secret.

Puwede ko bang paikliin ang Nano ID?

Oo, pero napakabilis lumaki ng panganib ng collision. Suriin ang halagang Mga ID para sa 1% na tsansa ng duplicate para sa haba at alphabet mo bago umasa sa maikling ID.

Bakit tinatanggihan ng decoder ang ULID ko?

Dapat eksaktong 26 karakter ang ULID, mga karakter lang ng Crockford Base32 ang gamitin, at magsimula sa 0 hanggang 7 (ang mas malaking unang karakter ay lalampas sa 128 bit).

Iniimbak o ipinapadala ba kahit saan ang mga ID?

Hindi. Ginagawa ang mga ito sa iyong browser at nawawala kapag umalis ka sa page.