Generator NanoID

Ustvarite vrednosti NanoID na spletu: privzeto 21 znakov, varnih za URL, približno 126 bitov naključnosti, z možnostjo prilagoditve dolžine in abecede.

Format
Ustvarjeni ID-ji
Pripravljeno. Ustvarite vrednosti NanoID neposredno v brskalniku.

Kako je sestavljen ta ID

Postavitev
Privzeto 21 znakov, varnih za URL, iz nabora A-Z, a-z, 0-9, podčrtaja in vezaja.
Entropija
Približno 126 bitov s privzeto abecedo s 64 znaki in dolžino 21 znakov.
Čas
Brez časovnega žiga; vrednosti NanoID so neprozorne, razen če sami določite pomen v abecedi po meri.
Tveganje za trk
Tveganje za trk se spreminja z dolžino in abecedo. Privzeta nastavitev je v enakem praktičnem varnostnem območju kot UUID v4.
Primer
GmpmekX2k6D4ZAsXCNVfh

Vaši ID-ji se ustvarijo lokalno z močno naključnostjo brskalnika. Nič se ne pošilja na BroBroGo.

Pogosta vprašanja

Zakaj uporabiti NanoID?

NanoID je krajši od UUID, privzeto varen za URL-je in še vedno ohranja visoko stopnjo naključnosti, če obdržite privzeto dolžino in abecedo.

Ali lahko spremenim abecedo?

Da. Zaklenjena stran NanoID ohranja nadzor nad dolžino in abecedo. Manjše abecede ali krajše dolžine povečajo tveganje za trk.

Kaj je Nano ID in zakaj je drugačen od UUID

Nano ID je format za generiranje kratkih, edinstvenih identifikatorjev, ki so varni za uporabo v URL-jih. Njegova privzeta dolžina je 21 znakov, kar je občutno manj kot 36 znakov pri UUID ali 26 znakov pri ULID. Kljub krajši dolžini ponuja primerljivo odpornost proti trkom (kolizijam). To dosega z uporabo večjega nabora dovoljenih znakov: privzeta abeceda obsega 64 URL-varnih znakov (A–Z, a–z, 0–9, _ in -), medtem ko UUID uporablja samo 16 heksadecimalnih znakov (0–9, a–f).

Ključna razlika tega orodja je popolna prilagodljivost. Za razliko od UUID, ki je vedno dolg 36 znakov, ali ULID, ki ima fiksno dolžino 26 znakov, lahko tukaj nastavite dolžino med 2 in 36 znaki ter poljubno abecedo. Sprememba katerega koli parametra takoj regenerira vse ID-je. To omogoča, da identifikatorje prilagodite natančnim zahtevam vašega sistema – na primer krajše ID-je za QR kode ali daljše za večjo varnost.

Prilagajanje: dolžina in abeceda

Dolžina se nastavi z drsnikom, katerega privzeta vrednost je 21, razpon pa sega od 2 do 36. Vsaka sprememba dolžine takoj sproži regeneracijo vseh prikazanih ID-jev. Krajši ID-ji so primernejši za uporabo v kratkih povezavah ali kodah, daljši pa nudijo večjo odpornost proti naključnim trkom.

Abeceda je urejevalno besedilno polje, ki privzeto vsebuje URL-varni nabor znakov. Lahko ga spremenite v poljubno zaporedje znakov – na primer samo številke (0123456789), samo velike črke (ABCDEFGHIJKLMNOPQRSTUVWXYZ) ali celo emojije, če jih sistem podpira. Vendar pa velja pomembno pravilo: abeceda mora vsebovati vsaj 2 različna znaka. Če jo skrčite na en sam znak (npr. samo A), se:

  • rezultati počistijo,
  • število ID-jev postane 0,
  • gumb »Kopiraj vse« se onemogoči,
  • prikaže se sporočilo o napaki: »Alphabet needs at least 2 different characters.«

To preprečuje generiranje nesmiselnih ID-jev, ki bi bili sestavljeni iz ponovitev istega znaka (npr. AAAA...), kar ne bi bilo niti edinstveno niti uporabno.

Kako deluje generiranje v brskalniku

Vsi ID-ji se ustvarijo lokalno v brskalniku z uporabo kriptografsko varnega generatorja naključnih števil crypto.getRandomValues. Ta funkcija je na voljo v vseh sodobnih brskalnikih in zagotavlja visoko kakovostno naključnost, primerno za generiranje neugodljivih identifikatorjev. Noben podatek – ne dolžina, ne abeceda, ne sami ID-ji – se ne pošilja na strežnik BroBroGo.

Postopek generiranja:

  1. Uporabnik nastavi dolžino, abecedo in število ID-jev (1–100).
  2. Brskalnik za vsak ID ustvari naključne indekse znotraj abecede.
  3. Indeksi se preslikajo v znake iz abecede in sestavijo ID.
  4. ID-ji se prikažejo na zaslonu in so pripravljeni za kopiranje.

Po vsaki spremembi katerega koli parametra (dolžina, abeceda, število) se postopek ponovi. Status orodja se spremeni iz »Ready.« v »Generated.«. Ko uporabnik klikne gumb »Kopiraj vse«, se prikaže »Copied all!«.

Varnost in zasebnost

Ker generiranje poteka izključno v brskalniku, so ID-ji popolnoma zasebni. Noben zunanji strežnik ne vidi, katere identifikatorje ste ustvarili. To je pomembno za:

  • Razvijalce, ki ustvarjajo API ključe ali žetone – strežnik ne more prestreči podatkov med postopkom.
  • Sistemske arhitekte, ki potrebujejo identifikatorje za občutljive podatke – tveganje puščanja je minimalno.
  • Uporabnike, ki so pozorni na zasebnost – ni sledenja, ni piškotkov, ni shranjevanja zgodovine generiranja.

Kriptografska kakovost naključnih števil (crypto.getRandomValues) zagotavlja, da so ID-ji neugodljivi tudi v visoko obremenjenih sistemih. V nasprotju z Math.random(), ki ni kriptografsko varen in je napovedljiv, so ID-ji iz tega orodja primerni za varnostno občutljive namene.

Primerjava s standardnimi formati

Spodnja tabela prikazuje ključne razlike med Nano ID, UUID in ULID:

Format Privzeta dolžina Velikost abecede Število možnih kombinacij (pri privzeti dolžini)
UUID 36 16 (heksadecimalno) 16³⁶ ≈ 3,4 × 10³⁸
ULID 26 32 (Crockford Base32) 32²⁶ ≈ 1,2 × 10³⁹
Nano ID 21 64 (URL-varni) 64²¹ ≈ 8,5 × 10³⁷

Čeprav ima Nano ID z 21 znaki manj možnih kombinacij kot UUID, je zaradi večjega nabora znakov še vedno izjemno odporen proti trkom. V praksi pri 21 znakih in 64-znakovni abecedi potrebujete približno 2,5 × 10¹⁸ ID-jev, da dosežete 50-odstotno verjetnost enega trka (po rojstnodnevnem paradoksu). To je za večino aplikacij povsem dovolj.

Primeri uporabe v praksi

Nano ID se pogosto uporablja v:

  • Kratkih povezavah: 8–10 znakov je dovolj za edinstvene URL-je v sistemu za skrajševanje.
  • Identifikatorjih v API-jih: kot primarni ključi v podatkovnih zbirkah (NoSQL ali relacijske), kjer so kratki nizi bolj učinkoviti kot dolgi UUID.
  • Edinstvenih tokenih: za začasne seje, potrditve e-pošte ali ponastavitev gesel.
  • QR kodah: krajši ID-ji pomenijo manj podatkov za kodiranje in lažje skeniranje.
  • Klicih v bazo podatkov: krajši nizi zmanjšajo velikost indeksov in pohitrijo poizvedbe.

Za vsako uporabo lahko prilagodite dolžino in abecedo. Na primer:

  • Samo številke (dolžina 6): primerno za kratke kode za dvofaktorsko avtentikacijo (6–8 mest).
  • Velike črke in številke (dolžina 12): brez I, O, l, 1 (da se izognete zamenjavi) – uporabno za ročni vnos.
  • Polna URL-varna abeceda (dolžina 21): standardna nastavitev za najboljšo kombinacijo dolžine in varnosti.

Kako izbrati prave parametre

Izbira dolžine in abecede je odvisna od tveganja trkov in udobja uporabnikov. Splošno pravilo: če pričakujete manj kot milijon ID-jev, je dovolj že 10–12 znakov s polno abecedo. Za večje sisteme (več milijard ID-jev) uporabite privzetih 21 znakov.

Abecedo izberite glede na okolje:

  • URL-ji: privzeta URL-varna abeceda (znaki _ in - so varni, + in / nista).
  • Ročni vnos: izključite znake, ki jih je enostavno zamenjati: 1/l/I, 0/O, 8/B.
  • Digitalni prikaz: lahko uporabite celoten nabor, vključno z malimi in velikimi črkami.

Če je abeceda premajhna (npr. samo 8 znakov) in je dolžina kratka (npr. 4), se verjetnost trkov močno poveča. Obratno: velika abeceda (64 znakov) in dolžina 21 dajeta izjemno odpornost. Orodje vas opozori le, če abeceda vsebuje manj kot 2 znaka – izračun tveganja trkov je prepuščen vam.

Pogosto zastavljena vprašanja (FAQ)

Zakaj je privzeta dolžina 21 znakov? Nano ID je bil zasnovan tako, da pri 21 znakih in 64-znakovni abecedi ponudi odpornost proti trkom, primerljivo z UUID, a v krajši obliki. Večina aplikacij potrebuje vsaj toliko entropije za varno delovanje.

Kaj se zgodi, če abeceda vsebuje samo en znak? Rezultati se počistijo, število ID-jev postane 0, gumb »Kopiraj vse« se onemogoči in prikaže se napaka. Orodje ne more generirati edinstvenih ID-jev iz enega znaka, zato prepreči nesmiselno operacijo.

Ali so ID-ji res edinstveni? Teoretično trki niso izključeni, vendar je verjetnost zanemarljiva za praktične namene. Pri privzetih nastavitvah je potrebnih približno 2,5 × 10¹⁸ ID-jev, da dosežete 50-odstotno verjetnost enega trka. To je daleč nad obsegom večine sistemov.

Ali lahko uporabim lastno abecedo, na primer samo male črke? Da. V urejevalno polje vnesite poljubne znake, ločene brez presledkov. Orodje jih bo uporabilo za generiranje. Poskrbite le, da jih bo vsaj 2.

Kako vem, da se ID-ji ne pošiljajo na strežnik? Generiranje poteka izključno v brskalniku z uporabo vgrajene funkcije crypto.getRandomValues. Noben podatek ne zapusti vaše naprave. To lahko preverite v omrežnem orodju brskalnika (network tab) – med generiranjem ni nobenega zahtevka na strežnik.

Ali lahko generiram več kot 100 ID-jev naenkrat? Orodje omogoča največ 100 ID-jev na generacijo. Če potrebujete več, izvedite več zaporednih generiranj. Omejitev preprečuje zamrznitev uporabniškega vmesnika pri velikem številu.