Генератор на NanoID

Генерирајте NanoID вредности онлајн: стандардно 21 карактер безбеден за URL, околу 126 бита на случајност, со прилагодена должина и азбука.

Формат
Генерирани ID
Подготвено. Генерирајте NanoID вредности во Вашиот прелистувач.

Како е изграден овој ID

Распоред
Стандардно 21 карактер безбеден за URL од A-Z, a-z, 0-9, долна црта и цртичка.
Ентропија
Околу 126 бита со стандардната азбука од 64 карактери и должина од 21 карактер.
Време
Нема временска ознака; NanoID вредностите се нетранспарентни, освен ако самите не вградите значење во прилагодена азбука.
Ризик од колизија
Ризикот од колизија се менува со должината и азбуката. Стандардната вредност е во истиот практичен опсег на безбедност како и UUID v4.
Пример
y4yH45jYMAsv-Gxh8br3J

Вашите ID се генерираат локално со силна случајност во прелистувачот. Ништо не се испраќа до BroBroGo.

ЧПП

Зошто да се користи NanoID?

NanoID е пократок од UUID, стандардно е безбеден за URL и сепак нуди високо ниво на случајност кога ги користите стандардната должина и азбука.

Може ли да ја променам азбуката?

Да. Наменската страница за NanoID ги содржи контролите за должина и азбука. Помалите азбуки или пократките должини го зголемуваат ризикот од колизија.

Што е Nano ID и како се разликува од UUID

Nano ID е формат за генерирање на уникатни идентификатори, дизајниран да биде пократок од UUID и истовремено да нуди споредлива отпорност на колизија. Неговата подразбирана должина изнесува 21 знак – за разлика од UUID кој има фиксни 36 знаци (вклучувајќи цртички) или ULID кој има 26 знаци. Стандардната азбука на Nano ID се состои само од знаци безбедни за URL (главни и мали букви a–z и цифри 0–9, со исклучок на неколку недвосмислени), што значи дека резултатот може директно да се користи во веб-адреси, параметри и JSON без дополнително кодирање.

Главната разлика што ја нуди страницата е целосната прилагодливост. Додека UUID и ULID имаат фиксна должина и фиксна азбука, овој генератор ви дозволува да поставите должина од 2 до 36 знаци и да изберете било која азбука која содржи најмалку два различни знаци. Промената на било кој параметар веднаш ги прегенерира идентификаторите, без потреба од рачно освежување. Ако ја стесните азбуката на еден единствен знак, резултатите се бришат, бројот на ID-а станува 0 и копчето „Копирај ги сите“ се оневозможува – ова е заштита од бесмислени идентификатори кои не би можеле да се разликуваат.

Прилагодување на должина и азбука

Влезните контроли се јасно поделени:

  • Формат: избран од паѓачкото мени како „Nano ID“ (за идна проширливост).
  • Број: помеѓу 1 и 100 – колку идентификатори да се генерираат одеднаш.
  • Должина: лизгач со подразбирана вредност 21, опсег од 2 до 36.
  • Азбука: поле за уредување на текст, кое подразбирано ги содржи URL-безбедните знаци (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-). Можете да го скратите или проширите по потреба, но доколку во него остане само еден единствен знак, генераторот се деактивира.

Зошто барем два различни знака? Со еден знак, секој идентификатор од било која должина би бил само низа од истиот лик – ниту уникатен, ниту корисен. Границата од 36 знаци е доволна за да се покријат повеќето практични сценарија: од кратки токени за потврда до долги примарни клучеви во бази.

Како функционира генерацијата на страницата

Сите пресметки се вршат локално во прелистувачот. Се користи crypto.getRandomValues() – силна криптографска случајност достапна во модерните прелистувачи. Ниту еден податок, вклучувајќи ги внесените параметри или генерираните ID-а, не се испраќа до серверот на BroBroGo. Ова значи дека вашата апликација или прототип може да користи точно истите вредности без ризик од протекување преку мрежата.

Кога ќе промените било која опција (должина, азбука, број или формат), страницата веднаш го стартува алгоритамот. Секој идентификатор се генерира независно, со најголема можна количина на случајност. Приказот ги вклучува и статусните пораки: „Ready.“ кога е подготвена, „Generated.“ по успешна генерација, и „Copied all!“ откако ќе ги копирате сите ID-а во клипборд. Поединечни ID-а може да се копираат со кликнување врз нив.

Кога и зошто да користите Nano ID

Развојните тимови кои работат со веб API-ја често бараат кратки, безбедни за URL и отпорни на колизија идентификатори. Nano ID со 21 знак нуди околу 126 бита ентропија (21 × log₂(64) ≈ 21 × 6 = 126, кога се користи стандардната азбука од 64 знаци). Тоа е споредливо со UUID-верзија 4 (122 бита), но во многу пократок пакет. За системи со висок обем, намалувањето од 36 на 21 знак значи значителна заштеда во складирање и пренос – секој идентификатор зазема 41% помалку простор.

Исто така, можноста да се прилагоди азбуката ви овозможува да избегнете двосмислени знаци (на пр. 1, l, I и 0, O). Ако вашата апликација прикажува ID-а на корисниците или ги печати за рачно внесување, можете да изберете само цифри или само големи букви. Ако пак ID-а се користат исклучиво во логиката на серверот, полн URL-безбеден сет е сосема прифатлив.

Типични употреби се:

  • Примарни клучеви во бази на податоци (наместо автоинкрементни броеви или GUID-ови)
  • Единствени токени за привремена автентикација или пораки
  • Кодови за кратки линкови и QR-ови
  • Идентификатори за настани во логовни системи

Веројатност за колизија и избор на параметри

Колку е поголема должината и колку повеќе знаци има азбуката, толку е помала шансата два идентификатори да се совпаднат. Формулата за бројот на можни уникатни низи е азбука^должина. Со азбука од 64 знаци и должина 21, имате 64²¹ ≈ 1.2 × 10³⁸ можни вредности – огромен простор. Ако генерирате 100 милиони ID-а, веројатноста за колизија е занемарлива (околу 4 × 10⁻¹³).

Кога треба да ја прилагодите должината? За токени кои се изложени на корисници (линкови, пораки), почесто се користи должина од 10 до 16 знаци за читливост. За интерни клучеви каде чувањето простор е критично, можете да одите до максимумот од 36. Ако азбуката е намалена на само цифри (10 знаци), за иста отпорност на колизија ќе ви треба подолга должина – на пример, 26 цифри даваат 10²⁶ комбинации. Секогаш можете да експериментирате со лизгачот и веднаш да го видите резултатот.

Често поставувани прашања

Зошто да не користам обичен UUID?
UUID има фиксна должина од 36 знаци, што е значително подолго од подразбираниот Nano ID (21). За ист степен на отпорност на колизија, Nano ID заштедува 41% простор. Дополнително, можете да ја прилагодите азбуката да изостави двосмислени знаци.

Што значи пораката „Азбуката мора да содржи најмалку 2 различни знаци“?
Ако полето за азбука содржи само еден единствен знак (на пр. само буквата „а“), генераторот не може да создаде вистински уникатни идентификатори, бидејќи сите би биле идентични (на пр. „аааа...“). Затоа резултатите се бришат и копчето за копирање се оневозможува.

Како да копирам поединечен идентификатор?
Кликнете врз него во списокот – вредноста веднаш се копира во клипборд. За копирање на сите идентификатори одеднаш, користете го копчето „Копирај ги сите“.

Може ли да генерирам повеќе од 100 ID-а одеднаш?
Не, ограничувањето е поставено на 100 за да се одржи перформансата и да се избегнат ненамерни грешки. Доколку ви требаат повеќе, можете да направите постапка со повеќе генерации.

Дали генерираните ID-а се криптографски безбедни?
Да. Се користи crypto.getRandomValues(), кој обезбедува случајност според стандардот на прелистувачот – истата рутина што се користи за криптографски клучеви. Процесот не зависи од серверски потписи или надворешни услуги.

Која е максималната должина што можам да ја поставам?
Максимумот е 36 знаци. Ако ви треба подолг идентификатор, можеби ќе треба да користите друг формат (на пример SHA-256 хеш), но за повеќето практични сценарија 36 знаци се повеќе од доволни за да се обезбеди уникатност дури и со мала азбука.