Generador d'ULID i Nano ID
Genera ULID (amb opció monòtona) o Nano ID amb alfabet i longitud personalitzats, descodifica la marca de temps d'un ULID i calcula el risc de col·lisió.
Probabilitat de col·lisió
- Mida de l'alfabet
- —
- Entropia per identificador
- —
- Identificadors possibles
- —
- Identificadors per a un 1 % de probabilitat de duplicat
- —
- Temps per arribar a aquest risc de l'1 %
- —
Descodifica un ULID
- Marca de temps (UTC, ISO 8601)
- Data i hora local
- Temps Unix (ms)
- Part aleatòria (80 bits, hex)
Com generar ULID o Nano ID
- A Tipus d’identificador, tria ULID (ordenable) o Nano ID (curt).
- Defineix la Quantitat (d‘1 a 1.000). Es generen deu identificadors tan bon punt es carrega la pàgina.
- Per als ULID, deixa marcada l’opció Monòton (estrictament creixent) perquè els identificadors creats en el mateix mil·lisegon s’ordenin igualment, i marca Minúscules si el teu sistema ho prefereix.
- Per als Nano ID, tria un Alfabet (o Personalitzat… i escriu els teus propis caràcters) i una Longitud.
- Fes clic a Genera i després Copia la llista o Baixa el .txt (un identificador per línia).
Per llegir la data amagada en un ULID, enganxa’l a Descodifica un ULID o fes clic a Descodifica el primer identificador. L’eina mostra la marca de temps en UTC (ISO 8601), en l’hora local, com a mil·lisegons Unix, i la part aleatòria de 80 bits en hexadecimal.
Què és un ULID?
Un ULID (Universally Unique Lexicographically Sortable Identifier) és un identificador de 128 bits escrit amb 26 caràcters de Base32 de Crockford, per exemple 01ARZ3NDEKTSV4RRFFQ69G5FAV. Els primers 10 caràcters codifiquen una marca de temps de 48 bits en mil·lisegons (suficient fins a l’any 10889); els últims 16 caràcters són 80 bits aleatoris. La Base32 de Crockford omet I, L, O i U per evitar confusions, i la descodificació no distingeix entre majúscules i minúscules.
Com que el temps va primer, els ULID s’ordenen alfabèticament en ordre de creació. Això els fa bons com a claus primàries: les files noves s’afegeixen al final d’un índex d’arbre B en lloc de quedar escampades com amb els UUID aleatoris, i pots ordenar per identificador en lloc d’utilitzar una columna de data a part.
Mode monòton. Dins d’un mateix mil·lisegon, els ULID aleatoris s’ordenarien en ordre aleatori. Amb l’opció monòtona, l’eina segueix l’especificació ULID: quan es creen diversos identificadors en el mateix mil·lisegon, manté la marca de temps i suma 1 a la part aleatòria anterior. Si el rellotge va enrere, manté l’última marca de temps, de manera que la seqüència mai no decreix.
Tingues en compte que un ULID revela quan es va crear. No n’utilitzis cap allà on aquesta informació sigui sensible.
Què és un Nano ID?
Nano ID és un identificador aleatori compacte. El valor per defecte són 21 caràcters d’un alfabet de 64 caràcters segur per a URL (A–Z a–z 0–9 _ -), cosa que dona 126 bits aleatoris, semblant a un UUID v4 (122 bits) en menys caràcters. Pots triar hexadecimal, només xifres, minúscules i xifres, alfanumèric, un conjunt sense caràcters semblants (sense 0/O, 1/l/I, 5/S…) per a codis que la gent escriu, o el teu propi alfabet de 2 a 256 caràcters. Els caràcters repetits d’un alfabet personalitzat s’eliminen, perquè farien que alguns caràcters fossin més probables.
Cada caràcter s’extreu amb crypto.getRandomValues mitjançant mostreig per rebuig, de manera que no hi ha biaix de mòdul.
Probabilitat de col·lisió
El quadre Probabilitat de col·lisió aplica la cota de la paradoxa de l’aniversari. Amb un alfabet de mida A i una longitud L, hi ha N = A^L identificadors possibles. Després de k identificadors, la probabilitat d’almenys un duplicat és d’aproximadament 1 − e^(−k²/2N), de manera que s’arriba a un risc de l‘1 % després de k ≈ √(2N · ln(1/0,99)) identificadors. Introdueix els Identificadors generats per hora per veure quant de temps portaria. Amb els valors per defecte i 1.000 identificadors per hora, un risc de l‘1 % triga uns 149 mil milions d’anys; amb 8 caràcters hexadecimals només en calen uns 9.300 identificadors.
Preguntes freqüents
ULID o UUID?
Tots dos són de 128 bits. Un ULID és més curt d’escriure (26 caràcters en lloc de 36) i s’ordena per temps. L’UUID versió 7 ofereix ara el mateix ordre temporal en el format UUID estàndard, que les bases de dades solen emmagatzemar de manera nativa. Tria UUID v7 si el teu entorn ho admet, i ULID si vols una cadena compacta i llegible.
Els ULID i els Nano ID són prou segurs per a tokens?
Els Nano ID amb l’alfabet i la longitud per defecte tenen 126 bits aleatoris d’un generador criptogràfic, cosa que és suficient per a enllaços impossibles d’endevinar. Els ULID només tenen 80 bits aleatoris, i en mode monòton els identificadors consecutius es diferencien per un, de manera que no facis servir ULID com a secrets.
Puc escurçar un Nano ID?
Sí, però el risc de col·lisió creix molt de pressa. Comprova el valor d’Identificadors per a un 1 % de probabilitat de duplicat per a la teva longitud i el teu alfabet abans de fiar-te d’un identificador curt.
Per què el descodificador rebutja el meu ULID?
Un ULID ha de tenir exactament 26 caràcters, fer servir només caràcters de Base32 de Crockford i començar per un caràcter de 0 a 7 (un primer caràcter més gran superaria els 128 bits).
Es desen o s'envien enlloc els identificadors?
No. Es generen al teu navegador i desapareixen quan surts de la pàgina.
Eines relacionades
- Generador d'UUID Generador d'UUID gratuït per a les versions 4 i 7. Crea'n fins a 1.000 alhora, en majúscules o sense guions, i copia'ls o baixa'ls com a .txt.
- Generador de contrasenyes Generador de contrasenyes gratuït que crea contrasenyes aleatòries fortes de 4 a 128 caràcters al navegador amb un generador segur. No es desa ni s'envia res.
- Convertidor de marca de temps Unix Converteix marques de temps Unix en segons o mil·lisegons a dates llegibles en hora local, UTC i ISO 8601, i torna qualsevol data a temps epoch.