NanoID-generaattori

Luo NanoID-arvoja verkossa: oletuksena 21 URL-turvallista merkkiä, noin 126 bittiä satunnaisuutta, mukautettavalla pituudella ja aakkostolla.

Muoto
Luodut tunnisteet
Valmis. Luo NanoID-arvoja selaimessasi.

Miten tämä tunniste muodostuu

Rakenne
Oletuksena 21 URL-turvallista merkkiä joukosta A-Z, a-z, 0-9, alaviiva ja yhdysviiva.
Entropia
Noin 126 bittiä käytettäessä oletusarvoista 64 merkin aakkostoa ja 21 merkin pituutta.
Aika
Ei aikaleimaa; NanoID-arvot ovat läpinäkymättömiä, ellet määritä merkitystä mukautetussa aakkostossa.
Törmäysriski
Törmäysriski vaihtelee pituuden ja aakkoston mukaan. Oletusasetus on käytännössä samalla turvallisuustasolla kuin UUID v4.
Esimerkki
WEs3uhDYkYlPPvBAMB8Ks

Tunnisteesi luodaan paikallisesti selaimen vahvalla satunnaisgeneraattorilla. Mitään ei lähetetä BroBroGo-palveluun.

Usein kysytyt kysymykset

Miksi käyttää NanoID-tunnistetta?

NanoID on lyhyempi kuin UUID, oletusarvoisesti URL-turvallinen ja tarjoaa silti erittäin suuren satunnaisuuden, kun käytetään oletuspituutta ja -aakkostoa.

Voinko muuttaa aakkostoa?

Kyllä. NanoID-sivulla on säätimet pituuden ja aakkoston muuttamiseen. Pienemmät aakkostot tai lyhyemmät pituudet kasvattavat törmäysriskiä.

Nano ID -generaattorin toiminta ja erityispiirteet

Tällä sivulla luodaan yksilöllisiä tunnisteita Nano ID -muodossa. Käyttäjä määrittää tunnisteen pituuden ja sallittujen merkkien joukon (aakkoston), minkä jälkeen työkalu tuottaa yhden tai useamman tunnisteen. Tunnisteet ovat kompakteja, URL-ystävällisiä ja kollisionkestäviä – ne soveltuvat esimerkiksi verkkosovellusten API-avaimiksi, QR-koodeiksi tai tietokannan pääavaimiksi.

Se, mikä tekee tästä sivusta erityisen, on säädeltävyys. Toisin kuin UUID (36 merkkiä) tai ULID (26 merkkiä), Nano ID:n oletuspituus on 21 merkkiä – lyhyempi kuin UUID, mutta tarjoaa vertailukelpoisen kollisionkestävyyden. Sekä pituutta että aakkostoa voidaan muuttaa vapaasti. Pituus on säädettävissä välillä 2–36 merkkiä. Aakkosto on muokattava tekstikenttä, jossa on oltava vähintään kaksi eri merkkiä. Kaikki muutokset päivittävät tunnisteet heti.

Oletuksena käytettävä aakkosto sisältää vain URL-ystävällisiä merkkejä (A–Z, a–z, 0–9 sekä väliviiva ja alaviiva). Tämä takaa, että tunnisteita voidaan käyttää suoraan URL-osoitteissa ilman prosenttikoodausta. Jos aakkosto typistetään yhdeksi merkiksi, tuloslista tyhjenee, tunnisteiden lukumääräksi tulee 0 ja "Kopioi kaikki" -painike muuttuu passiiviseksi.

Pituuden ja aakkoston vaikutus tunnisteiden kestävyyteen

Nano ID:n kollisionkestävyys perustuu kahteen tekijään: tunnisteen pituuteen ja aakkoston kokoon. Mitä pidempi tunniste ja mitä suurempi aakkosto, sitä pienempi todennäköisyys sille, että kaksi satunnaisesti generoitua tunnistetta ovat samoja. Laskukaava on yksinkertainen: mahdollisten tunnisteiden määrä = aakkoston koko^pituus. Esimerkiksi oletusarvoilla (21 merkkiä, URL-ystävällinen aakkosto, jossa 64 merkkiä) mahdollisia tunnisteita on 64^21 ≈ 1,8 * 10^38. Se on huomattavasti enemmän kuin UUID:n version 4 tarjoama 2^122 ≈ 5,3 * 10^36. Nano ID pystyy siis olemaan lyhyempi, mutta silti kollisionkestävämpi.

Sivun pituusliukusäädin antaa arvot 2–36. Oletus 21 on valittu kompromissina: se tuottaa noin 120 bittiä satunnaisuutta, mikä riittää useimpiin käytännön tarpeisiin. Jos aakkostoa pienennetään (esimerkiksi vain numerot 0–9, koko 10), saman kollisionkestävyyden saavuttamiseksi tarvitaan pidempi tunniste. Sivu laskee tämän automaattisesti: pituuden muuttaminen päivittää tunnisteet.

Aakkoston vähimmäisvaatimus on kaksi eri merkkiä. Jos käyttäjä yrittää syöttää vain yhden merkin (tai kopioi tekstikenttään yhden merkin), tulos tyhjenee ja ilmoitus "Alphabet needs at least 2 different characters." tulee näkyviin. Tämä estää tilanteen, jossa kaikki tunnisteet olisivat samaa merkkiä – ne olisivat silloin täysin ennustettavissa eivätkä lainkaan yksilöllisiä.

Miten generaattoria käytetään ja mitä syötteitä se hyväksyy

Sivulla on neljä pääsyötettä:

  • Muoto (Format): Valintalista, josta tällä hetkellä voi valita "Nano ID".
  • Määrä (Count): Numero väliltä 1–100. Kertoo, kuinka monta tunnistetta kerralla luodaan.
  • Pituus (Length): Liukusäädin, oletus 21, vaihteluväli 2–36.
  • Aakkosto (Alphabet): Tekstikenttä, jossa oletuksena URL-ystävälliset merkit. Kenttää voi muokata, ja vähimmäisvaatimus on kaksi eri merkkiä.

Kun käyttäjä muuttaa jotakin näistä, tunnisteet uudelleenluodaan välittömästi. Sivun tila näkyy kolmessa vaiheessa:

  • Ready. – kun sivu on valmis, eikä generointia ole vielä tehty.
  • Generated. – kun tunnisteet on tuotettu.
  • Copied all! – kun kaikki tunnisteet on kopioitu leikepöydälle "Kopioi kaikki" -painiketta napsauttamalla.

Yksittäisen tunnisteen voi kopioida napsauttamalla sitä. Tämä on kätevää, jos tarvitsee vain yhden tunnisteen eikä halua kopioida koko listaa.

Taulukko: syötteiden oletusarvot ja sallitut vaihteluvälit

Syöte Oletus Vaihteluväli
Muoto Nano ID vain Nano ID
Määrä 5 (oletus) 1–100
Pituus 21 2–36
Aakkosto URL-ystävällinen väh. 2 eri merkkiä

Tekninen toteutus: selainpohjainen satunnaisuus ja yksityisyys

Kaikki tunnisteet luodaan käyttäjän selaimessa käyttäen crypto.getRandomValues()-funktiota. Tämä on moderni, kryptografisesti vahva satunnaislukugeneraattori, joka on saatavilla kaikissa nykyselaimissa. Sivuston palvelimelle (BroBroGo) ei lähetetä mitään tietoa generaattorista – ei tunnisteita, ei syötteitä, ei edes sitä, että työkalua on käytetty. Tämä tekee työkalusta sopivan tilanteisiin, joissa yksityisyys on tärkeää, kuten arkaluontoisten tunnisteiden luontiin kehitysympäristössä tai asiakkaan omalla koneella.

Koska generointi tapahtuu kokonaan paikallisesti, sivu toimii myös ilman verkkoyhteyttä (edellyttäen, että sivu on ladattu ensin). Tämä eroaa monista pilvipohjaisista tunnistegeneraattoreista, jotka vaativat palvelinpyyntöjä.

Sivulla hyödynnetään myös URL-ystävällistä aakkostoa, jotta tunnisteita ei tarvitse manuaalisesti koodata. Aakkoston muokkaamisen yhteydessä tarkistetaan, että se sisältää vähintään kaksi eri merkkiä; jos ei, kopiointitoiminnot estetään.

Vertailu muihin tunnistemuotoihin: UUID, ULID, Nano ID

Nano ID ei ole ainoa satunnaistunnisteen muoto, mutta se erottuu edukseen juuri säädeltävyydellään.

Muoto Oletuspituus Merkistö Bittimäärä
UUID v4 36 (32+4 väliviivaa) heksadesimaali (0–9, a–f) 122 bittiä
ULID 26 Crockford Base32 (A–Z, 2–7) 128 bittiä
Nano ID (oletus) 21 URL-ystävällinen (64 merkkiä) n. 126 bittiä

UUID on standardoitu (RFC 4122), mutta sen pituus on kiinteä ja väliviivat tekevät siitä hankalan URL-käytössä. ULID on lyhyempi ja aikaleimapohjainen, mutta se ei salli aakkoston muokkaamista. Nano ID on ainoa, jossa sekä pituus että aakkosto ovat vapaasti valittavissa – jopa niin, että voit rajoittaa tunnisteen esimerkiksi vain numeroihin, jos tietokantasi indeksoinnin takia tarvitaan numeerisia avaimia.

Kollisiontodennäköisyys käytännössä: Jos generoit miljardi tunnistetta (10^9) Nano ID:llä oletusasetuksilla, todennäköisyys saada ainakin yksi kollisio on luokkaa 10^-15 – erittäin epätodennäköistä. UUID:n vastaava luku on noin 10^-12, joten Nano ID on itse asiassa hivenen turvallisempi.

Usein kysytyt kysymykset

Miksi oletuspituus on 21 eikä 36, kuten UUID:ssa?

21 merkkiä 64 merkin aakkostolla tuottaa noin 126 bittiä satunnaisuutta, mikä on enemmän kuin UUID:n 122 bittiä. Lyhyempi tunniste säästää tallennustilaa ja kaistanleveyttä, eikä kollisioriski ole huonompi.

Voinko käyttää vain numeroita aakkostossa?

Kyllä, vaihda aakkosto esim. arvoon 0123456789. Muista, että tällöin tarvitaan pidempi tunniste saman kollisionkestävyyden saavuttamiseksi.

Mitä tapahtuu, jos valitsen pituudeksi 2?

Tunnisteita on mahdollista vain 64^2 = 4096 erilaista (oletusaakkostolla). Jos määräksi on asetettu yli 4096, ainakin yksi kollisio on väistämätön. Sivu kuitenkin rajoittaa määrän 100:een, joten tämä on teoreettinen ongelma, mutta käyttäjän on hyvä tiedostaa, että lyhyet tunnisteet eivät ole kollisionkestäviä suurissa joukoissa.

Miksi "Kopioi kaikki" -painike on pois päältä, kun aakkosto on yksimerkkinen?

Koska tällöin jokainen tunniste olisi täysin sama (esim. "aaaa..."). Niiden kopioiminen ei olisi mielekästä, ja virhetilanne halutaan estää selkeästi.

Generoidaanko tunnisteet oikeasti satunnaisesti selaimessa?

Kyllä, sivu käyttää crypto.getRandomValues()-metodia, joka on kryptografisesti vahva satunnaislähde. Se on sama lähde, jota salauskirjastot hyödyntävät.

Voiko sivua käyttää offline-tilassa?

Kun sivu on kerran ladattu, generointi toimii ilman verkkoyhteyttä, koska kaikki laskenta tapahtuu paikallisesti JavaScriptillä.