ULID i Nano ID generator
Generiraj ULID-ove (uz monotonu opciju) ili Nano ID-ove s vlastitom abecedom i duljinom, skupno, dekodiraj vremensku oznaku ULID-a i provjeri rizik sudara.
Vjerojatnost sudara
- Veličina abecede
- —
- Entropija po ID-u
- —
- Mogućih ID-ova
- —
- ID-ova za 1 % vjerojatnosti duplikata
- —
- Vrijeme do tog 1 % rizika
- —
Dekodiraj ULID
- Vremenska oznaka (UTC, ISO 8601)
- Lokalni datum i vrijeme
- Unix vrijeme (ms)
- Nasumični dio (80 bitova, heks.)
Kako generirati ULID-ove ili Nano ID-ove
- Pod Vrsta ID-a odaberi ULID (sortabilni) ili Nano ID (kratki).
- Postavi Koliko (od 1 do 1000). Deset ID-ova generira se čim se stranica učita.
- Za ULID-ove ostavi označeno Monotono (strogo rastuće) da se ID-ovi nastali u istoj milisekundi ipak sortiraju po redu, a označi Mala slova ako ih tvoj sustav preferira.
- Za Nano ID-ove odaberi Abeceda (ili Vlastita… i upiši vlastite znakove) i Duljina.
- Klikni Generiraj, zatim Kopiraj popis ili Preuzmi .txt (jedan ID po retku).
Da pročitaš datum skriven u ULID-u, zalijepi ga pod Dekodiraj ULID ili klikni Dekodiraj prvi ID. Alat prikazuje vremensku oznaku u UTC-u (ISO 8601), u tvom lokalnom vremenu, kao Unix milisekunde te 80-bitni nasumični dio u heksadecimalnom zapisu.
Što je ULID?
ULID (Universally Unique Lexicographically Sortable Identifier) je 128-bitni identifikator zapisan kao 26 znakova Crockford Base32, na primjer 01ARZ3NDEKTSV4RRFFQ69G5FAV. Prvih 10 znakova kodira 48-bitnu vremensku oznaku u milisekundama (dovoljno do 10889. godine); zadnjih 16 znakova su 80 nasumičnih bitova. Crockford Base32 izostavlja I, L, O i U da se izbjegne zabuna, a dekodiranje ne razlikuje velika i mala slova.
Budući da vrijeme dolazi prvo, ULID-ovi se abecedno sortiraju po redoslijedu nastanka. To ih čini dobrim primarnim ključevima: novi se retci dodaju na kraj B-stabla indeksa umjesto da budu razasuti kao nasumični UUID-ovi, a možeš sortirati po ID-u umjesto po zasebnom stupcu s datumom.
Monotoni način. Unutar jedne milisekunde nasumični ULID-ovi sortirali bi se nasumičnim redom. S monotonom opcijom alat slijedi ULID specifikaciju: kad se nekoliko ID-ova stvori u istoj milisekundi, zadržava vremensku oznaku i prethodnom nasumičnom dijelu dodaje 1. Ako sat ode unatrag, zadržava zadnju vremensku oznaku, pa niz nikada ne opada.
Imaj na umu da ULID otkriva kada je nastao. Ne koristi ga tamo gdje je ta informacija osjetljiva.
Što je Nano ID?
Nano ID je kompaktan nasumični identifikator. Zadano je 21 znak iz 64-znakovne abecede sigurne za URL (A–Z a–z 0–9 _ -), što daje 126 nasumičnih bitova, slično UUID-u v4 (122 bita) u manje znakova. Možeš odabrati heksadecimalnu abecedu, samo znamenke, mala slova i znamenke, alfanumeričku, skup bez sličnih znakova (bez 0/O, 1/l/I, 5/S…) za kodove koje ljudi upisuju ili vlastitu abecedu od 2 do 256 znakova. Duplicirani znakovi u vlastitoj abecedi uklanjaju se jer bi neke znakove činili vjerojatnijima.
Svaki se znak izvlači pomoću crypto.getRandomValues uz uzorkovanje s odbacivanjem, pa nema pristranosti zbog modula.
Vjerojatnost sudara
Ploča Vjerojatnost sudara primjenjuje granicu problema rođendana. Uz abecedu veličine A i duljinu L postoji N = A^L mogućih ID-ova. Nakon k ID-ova, šansa za barem jedan duplikat iznosi otprilike 1 − e^(−k²/2N), pa se 1 % rizika postiže nakon k ≈ √(2N · ln(1/0,99)) ID-ova. Unesi Generiranih ID-ova na sat da vidiš koliko bi to trajalo. Uz zadane postavke i 1000 ID-ova na sat, 1 % rizika traje otprilike 149 milijardi godina; s 8 heksadecimalnih znakova treba samo oko 9300 ID-ova.
Česta pitanja
ULID ili UUID?
Oba su 128-bitna. ULID je kraći za pisanje (26 znakova umjesto 36) i sortira se po vremenu. UUID verzije 7 sada nudi isto vremensko uređenje u standardnom UUID formatu, koji baze često pohranjuju izvorno. Odaberi UUID v7 ako ga tvoj stog podržava, a ULID ako želiš kompaktan, čitljiv niz.
Jesu li ULID-ovi i Nano ID-ovi dovoljno sigurni za tokene?
Nano ID-ovi sa zadanom abecedom i duljinom imaju 126 nasumičnih bitova iz kriptografskog generatora, što je dovoljno za nepogodive poveznice. ULID-ovi imaju samo 80 nasumičnih bitova, a u monotonom načinu uzastopni ID-ovi razlikuju se za jedan, pa ULID-ove ne koristi kao tajne.
Mogu li skratiti Nano ID?
Možeš, ali rizik sudara raste vrlo brzo. Provjeri vrijednost ID-ova za 1 % vjerojatnosti duplikata za svoju duljinu i abecedu prije nego se osloniš na kratak ID.
Zašto dekoder odbija moj ULID?
ULID mora imati točno 26 znakova, koristiti samo znakove Crockford Base32 i početi znamenkom od 0 do 7 (veći prvi znak premašio bi 128 bitova).
Pohranjuju li se ili šalju ID-ovi negdje?
Ne. Generiraju se u tvom pregledniku i nestaju kad napustiš stranicu.
Slični alati
- UUID generator Besplatni UUID generator za verzije 4 i 7. Izradi do 1000 odjednom, velikim slovima ili bez crtica, zatim kopiraj ili preuzmi kao .txt datoteku.
- Generator lozinki Besplatan generator lozinki koji u pregledniku izrađuje jake nasumične lozinke od 4 do 128 znakova sigurnim generatorom. Ništa se ne sprema niti šalje.
- Pretvarač Unix vremenske oznake Pretvori Unix vremenske oznake u sekundama ili milisekundama u čitljive datume u lokalnom vremenu, UTC-u i ISO 8601, a svaki datum vrati u epoch vrijeme.