ULID i Nano ID generator
Generiši ULID-ove (sa monotonom opcijom) ili Nano ID-jeve sa prilagođenim skupom znakova i dužinom, u većem broju, dekodiraj ULID i proveri rizik od kolizije.
Verovatnoća kolizije
- Veličina skupa znakova
- —
- Entropija po ID-ju
- —
- Mogućih ID-jeva
- —
- ID-jeva za 1% šanse za duplikat
- —
- Vreme do tog rizika od 1%
- —
Dekodiraj ULID
- Vremenska oznaka (UTC, ISO 8601)
- Lokalni datum i vreme
- Unix vreme (ms)
- Nasumični deo (80 bitova, heks)
Kako se generišu ULID-ovi ili Nano ID-jevi
- Pod Tip ID-ja izaberi ULID (sortabilan) ili Nano ID (kratak).
- Postavi Koliko (od 1 do 1.000). Deset ID-jeva se generiše čim se stranica učita.
- Za ULID-ove ostavi označeno Monoton (strogo rastući) da ID-jevi napravljeni u istoj milisekundi ipak budu poređani, a označi Mala slova ako ih tvoj sistem preferira.
- Za Nano ID-jeve izaberi Azbuka (skup znakova) (ili Prilagođeno… pa upiši sopstvene znakove) i Dužina.
- Klikni Generiši, pa Kopiraj listu ili Preuzmi kao .txt (jedan ID po redu).
Da pročitaš datum skriven u ULID-u, nalepi ga pod Dekodiraj ULID ili klikni Dekodiraj prvi ID. Alat prikazuje vremensku oznaku u UTC (ISO 8601), u tvom lokalnom vremenu, kao Unix milisekunde i 80-bitni nasumični deo u heksadecimalnom zapisu.
Šta je ULID?
ULID (Universally Unique Lexicographically Sortable Identifier) je 128-bitni identifikator zapisan kao 26 znakova Crockford Base32, na primer 01ARZ3NDEKTSV4RRFFQ69G5FAV. Prvih 10 znakova kodira 48-bitnu vremensku oznaku u milisekundama (dovoljno do 10889. godine); poslednjih 16 znakova je 80 nasumičnih bitova. Crockford Base32 izostavlja I, L, O i U da bi se izbegla zabuna, a dekodiranje ne razlikuje velika i mala slova.
Pošto vreme dolazi prvo, ULID-ovi se azbučno sortiraju redom nastanka. To ih čini dobrim primarnim ključevima: novi redovi dodaju se na kraj B-stabla indeksa umesto da budu razbacani kao nasumični UUID-ovi, a možeš sortirati po ID-ju umesto po posebnoj koloni sa datumom.
Monotoni režim. Unutar jedne milisekunde nasumični ULID-ovi bi se sortirali nasumičnim redom. Sa monotonom opcijom alat prati ULID specifikaciju: kada se više ID-jeva napravi u istoj milisekundi, zadržava vremensku oznaku i dodaje 1 prethodnom nasumičnom delu. Ako sat ode unazad, zadržava poslednju vremensku oznaku, pa niz nikada ne opada.
Imaj na umu da ULID otkriva kada je napravljen. Ne koristi ga tamo gde je ta informacija osetljiva.
Šta je Nano ID?
Nano ID je kompaktan nasumični identifikator. Podrazumevano je 21 znak iz 64-znakovnog skupa bezbednog za URL (A–Z a–z 0–9 _ -), što daje 126 nasumičnih bitova, slično UUID v4 (122 bita) u manje znakova. Možeš izabrati heksadecimalni, samo cifre, mala slova i cifre, alfanumerički, skup bez sličnih znakova (bez 0/O, 1/l/I, 5/S…) za kodove koje ljudi kucaju, ili sopstveni skup od 2 do 256 znakova. Dupli znakovi u prilagođenom skupu se uklanjaju, jer bi neke znakove učinili verovatnijim.
Svaki znak se izvlači pomoću crypto.getRandomValues uz odbacivanje uzoraka (rejection sampling), pa nema pristrasnosti usled modula.
Verovatnoća kolizije
Panel Verovatnoća kolizije primenjuje granicu rođendanskog paradoksa. Sa skupom znakova veličine A i dužinom L, postoji N = A^L mogućih ID-jeva. Posle k ID-jeva, šansa za bar jedan duplikat je oko 1 − e^(−k²/2N), pa se rizik od 1% dostiže posle k ≈ √(2N · ln(1/0,99)) ID-jeva. Unesi Generisanih ID-jeva na čas da vidiš koliko bi to trajalo. Sa podrazumevanim podešavanjima i 1.000 ID-jeva na čas, rizik od 1% traje oko 149 milijardi godina; sa 8 heksadecimalnih znakova traje samo oko 9.300 ID-jeva.
Česta pitanja
ULID ili UUID?
Oba su 128-bitna. ULID je kraći za pisanje (26 znakova umesto 36) i sortira se po vremenu. UUID verzije 7 sada nudi isto vremensko uređenje u standardnom UUID formatu, koji baze često čuvaju izvorno. Izaberi UUID v7 ako ga tvoj stek podržava, ULID ako želiš kompaktan, čitljiv string.
Da li su ULID-ovi i Nano ID-jevi dovoljno bezbedni za tokene?
Nano ID-jevi sa podrazumevanim skupom znakova i dužinom imaju 126 nasumičnih bitova iz kriptografskog generatora, što je dovoljno za veze koje se ne mogu pogoditi. ULID-ovi imaju samo 80 nasumičnih bitova, a u monotonom režimu uzastopni ID-jevi se razlikuju za jedan, pa ULID-ove ne koristi kao tajne.
Mogu li da skratim Nano ID?
Da, ali rizik od kolizije raste veoma brzo. Proveri vrednost ID-jeva za 1% šanse za duplikat za svoju dužinu i skup znakova pre nego što se osloniš na kratak ID.
Zašto dekoder odbija moj ULID?
ULID mora imati tačno 26 znakova, koristiti samo znakove Crockford Base32 i počinjati sa 0 do 7 (veći prvi znak premašio bi 128 bitova).
Da li se ID-jevi čuvaju ili šalju negde?
Ne. Generišu se u tvom pregledaču i nestaju kada napustiš stranicu.
Srodni alati
- UUID generator Besplatan UUID generator za UUID verzije 4 i 7. Napravi do 1.000 odjednom, velikim slovima ili bez crtica, pa kopiraj ili preuzmi kao .txt.
- Generator lozinki Besplatan generator lozinki pravi jake nasumične lozinke od 4 do 128 znakova u tvom pregledaču uz bezbedan generator. Ništa se ne čuva niti šalje.
- Unix timestamp pretvarač Pretvori Unix timestamp u sekundama ili milisekundama u čitljiv datum u lokalnom vremenu, UTC i ISO 8601, i pretvori bilo koji datum nazad u epoch vreme.