Генератор на ULID и Nano ID
Генерирайте ULID (с монотонна опция) или Nano ID със собствена азбука и дължина, на едро, декодирайте времето в ULID и проверете риска от колизия.
Вероятност за колизия
- Размер на азбуката
- —
- Ентропия на идентификатор
- —
- Възможни идентификатори
- —
- Идентификатори за 1% шанс за повторение
- —
- Време до достигане на този 1% риск
- —
Декодиране на ULID
- Времеви печат (UTC, ISO 8601)
- Местна дата и час
- Unix време (мс)
- Случайна част (80 бита, hex)
Как да генерирате ULID или Nano ID
- В Вид идентификатор изберете ULID (сортируем) или Nano ID (кратък).
- Задайте Колко (от 1 до 1000). Десет идентификатора се генерират веднага щом страницата се зареди.
- За ULID оставете отметнат Монотонен (строго нарастващ), така че идентификаторите, създадени в една и съща милисекунда, пак да се подреждат по ред, и отметнете Малки букви, ако вашата система го предпочита.
- За Nano ID изберете Азбука (или Собствена… и въведете свои знаци) и Дължина.
- Щракнете върху Генерирай, после Копирай списъка или Изтегли като .txt (по един идентификатор на ред).
За да прочетете датата, скрита в ULID, поставете го в Декодиране на ULID или щракнете върху Декодирай първия идентификатор. Инструментът показва времето в UTC (ISO 8601), по вашето местно време, като Unix милисекунди и 80-битовата случайна част в hex.
Какво е ULID?
ULID (Universally Unique Lexicographically Sortable Identifier) е 128-битов идентификатор, записан като 26 знака в Crockford Base32, например 01ARZ3NDEKTSV4RRFFQ69G5FAV. Първите 10 знака кодират 48-битов времеви печат в милисекунди (достатъчен до 10889 г.); последните 16 знака са 80 случайни бита. Crockford Base32 пропуска I, L, O и U, за да се избегне объркване, а декодирането не различава малки от главни букви.
Тъй като времето е първо, ULID се подреждат по азбучен ред в реда на създаване. Това ги прави добри първични ключове: новите редове се добавят в края на B-дървесния индекс, вместо да са пръснати като случайните UUID, и можете да сортирате по идентификатор вместо по отделна колона с дата.
Монотонен режим. В рамките на една милисекунда случайните ULID биха се подреждали в случаен ред. С монотонната опция инструментът следва спецификацията на ULID: когато няколко идентификатора се създават в една и съща милисекунда, запазва времевия печат и добавя 1 към предишната случайна част. Ако часовникът се върне назад, запазва последния времеви печат, така че редицата никога не намалява.
Имайте предвид, че ULID разкрива кога е създаден. Не използвайте такъв там, където тази информация е чувствителна.
Какво е Nano ID?
Nano ID е компактен случаен идентификатор. По подразбиране е 21 знака от 64-знакова азбука, безопасна за URL (A–Z a–z 0–9 _ -), което дава 126 случайни бита, подобно на UUID v4 (122 бита) с по-малко знаци. Можете да изберете шестнадесетична азбука, само цифри, малки букви и цифри, букви и цифри, набор без сходни знаци (без 0/O, 1/l/I, 5/S…) за кодове, които хората въвеждат, или своя азбука от 2 до 256 знака. Повтарящите се знаци в собствена азбука се премахват, защото биха направили някои знаци по-вероятни.
Всеки знак се тегли с crypto.getRandomValues чрез отхвърлящо семплиране, така че няма отклонение от модулната операция.
Вероятност за колизия
Панелът Вероятност за колизия прилага границата на рождения ден. При азбука с размер A и дължина L има N = A^L възможни идентификатора. След k идентификатора вероятността за поне един дубликат е около 1 − e^(−k²/2N), така че 1% риск се достига след k ≈ √(2N · ln(1/0,99)) идентификатора. Въведете Генерирани идентификатори на час, за да видите колко време би отнело. С настройките по подразбиране и 1000 идентификатора на час 1% риск отнема около 149 милиарда години; с 8 шестнадесетични знака отнема само около 9300 идентификатора.
Често задавани въпроси
ULID или UUID?
И двата са 128 бита. ULID е по-кратък за записване (26 знака вместо 36) и се подрежда по време. UUID версия 7 вече предлага същото подреждане по време в стандартния UUID формат, който базите данни често съхраняват нативно. Изберете UUID v7, ако вашата платформа го поддържа, и ULID, ако искате компактен, четим низ.
Достатъчно сигурни ли са ULID и Nano ID за токени?
Nano ID със стандартната азбука и дължина има 126 случайни бита от криптографски генератор, което е достатъчно за непредсказуеми връзки. ULID имат само 80 случайни бита, а в монотонен режим последователните идентификатори се различават с единица, затова не използвайте ULID като тайни.
Мога ли да скъся Nano ID?
Да, но рискът от колизия расте много бързо. Проверете стойността Идентификатори за 1% шанс за повторение за вашата дължина и азбука, преди да разчитате на кратък идентификатор.
Защо декодерът отхвърля моя ULID?
ULID трябва да има точно 26 знака, да използва само знаци от Crockford Base32 и да започва с 0 до 7 (по-голям първи знак би надвишил 128 бита).
Съхраняват ли се или изпращат ли се идентификаторите някъде?
Не. Те се генерират във вашия браузър и изчезват, когато напуснете страницата.
Сродни инструменти
- UUID генератор Безплатен UUID генератор за версии 4 и 7. Създайте до 1000 наведнъж, с главни букви или без тирета, после копирайте или изтеглете като .txt файл.
- Генератор на пароли Безплатен генератор на пароли, който създава силни случайни пароли от 4 до 128 знака във вашия браузър със сигурен генератор. Нищо не се съхранява.
- Конвертор на Unix времеви печат Преобразувайте Unix времеви печат в секунди или милисекунди в четими дати по местно време, UTC и ISO 8601 и обратно – всяка дата в epoch време.