Penjana NanoID

Jana nilai NanoID dalam talian: 21 aksara selamat URL secara lalai, sekitar 126 bit rawak, dengan panjang dan abjad tersuai.

Format
ID yang dijana
Sedia. Jana nilai NanoID dalam pelayar anda.

Cara ID ini dibina

Reka letak
21 aksara selamat URL secara lalai daripada A-Z, a-z, 0-9, garis bawah (_) dan sempang (-).
Entropi
Sekitar 126 bit dengan abjad 64 aksara lalai dan panjang 21 aksara.
Masa
Tiada cap masa; nilai NanoID adalah legap melainkan anda memasukkan makna tertentu ke dalam abjad tersuai.
Risiko perlanggaran
Risiko perlanggaran (collision) berubah mengikut panjang dan abjad yang digunakan. Tetapan lalai berada dalam julat keselamatan praktikal yang sama seperti UUID v4.
Contoh
uKJIKCF6V7Hl6ldbI0PUT

ID anda dijana secara tempatan dengan kerawakan penyemak imbas yang kuat. Tiada apa-apa yang dihantar ke BroBroGo.

Soalan Lazim

Mengapa perlu menggunakan NanoID?

NanoID adalah lebih pendek daripada UUID, selamat untuk URL secara lalai dan masih mempunyai tahap kerawakan yang tinggi apabila anda mengekalkan panjang dan abjad lalai.

Bolehkah saya menukar abjad yang digunakan?

Ya. Halaman NanoID yang dikunci mengekalkan kawalan panjang dan abjad. Abjad yang lebih kecil atau panjang yang lebih pendek akan meningkatkan risiko perlanggaran.

Apakah yang Dilakukan oleh Halaman nano-id-generator?

Halaman ini menghasilkan pengecam unik menggunakan format Nano ID. Anda menentukan panjang dan set aksara yang dibenarkan, dan alat ini akan mengeluarkan satu atau lebih ID yang padat, selamat untuk URL, dan tahan pelanggaran (collision-resistant). Semua penjanaan dilakukan sepenuhnya di dalam pelayar anda menggunakan crypto.getRandomValues – tiada data dihantar ke pelayan BroBroGo.

Apa yang Membezakan Halaman Ini Daripada Alat Penjanaan ID Lain?

Tidak seperti UUID yang mempunyai panjang tetap 36 aksara (termasuk sempang) atau ULID yang sepanjang 26 aksara, Nano ID mempunyai panjang lalai hanya 21 aksara. Ini menjadikannya lebih pendek daripada UUID sementara masih menawarkan ketahanan pelanggaran yang setanding. Perbezaan utama lain:

  • Panjang boleh dilaraskan antara 2 hingga 36 aksara melalui gelangsar.
  • Alfabet (set aksara) boleh diedit terus dalam medan teks, dengan syarat ia mengandungi sekurang-kurangnya 2 aksara berbeza.
  • Sebarang perubahan pada panjang, alfabet, atau kuantiti akan serta-merta menjana semula ID.
  • Jika alfabet dikecilkan kepada hanya satu aksara, hasil penjanaan dikosongkan, kiraan ID menjadi 0, dan butang “Salin semua” dilumpuhkan.
  • Aksara lalai adalah aksara selamat-URL (A-Za-z0-9_-), tiada aksara yang memerlukan pengekodan peratus.

Perbandingan ringkas dengan format popular lain:

Format Panjang Lalai Contoh
UUID v4 36 aksara 550e8400-e29b-41d4-a716-446655440000
ULID 26 aksara 01ARZ3NDEKTSV4RRFFQ69G5FAV
Nano ID 21 aksara V1StGXR8_Z5jdHi6B-myT

Kelebihan utama Nano ID di sini ialah fleksibiliti penuh: anda tidak terikat dengan satu panjang atau satu set aksara. Ini berguna apabila anda perlu mematuhi kekangan format yang ketat, seperti hanya menggunakan digit, atau mengelakkan aksara yang mudah dikelirukan (contoh: O dan 0, l dan 1).

Input, Output, dan Cara Ia Berfungsi

Input yang diterima oleh alat:

  • Format – dipilih daripada menu lungsur, dalam kes ini Nano ID.
  • Kiraan – nombor antara 1 hingga 100 (inklusif). Anda boleh hasilkan sehingga 100 ID sekali gus.
  • Panjang – gelangsar dengan nilai lalai 21, julat 2 hingga 36.
  • Alfabet – medan teks boleh sunting yang mengandungi aksara-aksara yang dibenarkan. Lalai ialah semua aksara selamat-URL: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.

Output yang dipaparkan:

  • Senarai ID – setiap ID unik dipaparkan satu demi satu.
  • Kiraan ID – bilangan ID yang berjaya dijana.
  • Status:
    • Sedia – apabila alat dalam keadaan terbiar.
    • Dijana! – selepas penjanaan berjaya.
    • Semua disalin! – selepas semua ID disalin ke papan keratan.
    • Alfabet perlu sekurang-kurangnya 2 aksara berbeza. – ralat apabila alfabet tidak sah.

Mekanisme penjanaan:

Setiap kali anda menukar mana-mana input (panjang, alfabet, kiraan, atau format), penjanaan semula berlaku serta-merta. Algoritma Nano ID menggunakan crypto.getRandomValues untuk menghasilkan bit rawak yang kuat dari segi kriptografi, kemudian memetakannya ke aksara dalam alfabet yang ditentukan. Oleh kerana rawak ini tidak boleh diramal, ID yang terhasil adalah selamat untuk digunakan sebagai token, kunci pangkalan data, atau pengecam sesi.

Menyalin ID:

  • Klik pada ID individu – ia akan disalin ke papan keratan.
  • Klik butang “Salin semua” – kesemua ID disalin serentak.

Peraturan dan Kes Tepi yang Perlu Diketahui

Beberapa peraturan penting yang memastikan alat ini berfungsi seperti yang diharapkan:

  1. Alfabet mesti mengandungi sekurang-kurangnya 2 aksara berbeza.
    Sebab: Jika hanya satu aksara, semua ID akan menjadi rentetan aksara yang sama (cth: aaaa...). Ini bukan lagi pengecam unik. Alat akan kosongkan hasil dan lumpuhkan butang salinan.

  2. Panjang minimum 2 aksara.
    Walaupun 2 aksara mungkin terlalu pendek untuk kegunaan sebenar (risiko pelanggaran tinggi), ia disediakan untuk fleksibiliti maksimum.

  3. Panjang maksimum 36 aksara.
    Ini sudah melebihi panjang lalai 21. Untuk kebanyakan aplikasi, 21 aksara sudah mencukupi; panjang lebih besar meningkatkan ketahanan pelanggaran tetapi juga meningkatkan saiz ID.

  4. Penjanaan tempatan sepenuhnya.
    Tiada data dihantar ke pelayan. Ini penting untuk privasi dan keselamatan, terutamanya jika ID digunakan sebagai token sesi atau kunci rahsia.

  5. Perubahan input = penjanaan semula segera.
    Anda tidak perlu menekan butang “jana”. Setiap pelarasan pada gelangsar, medan alfabet, atau kiraan akan mengemas kini output secara langsung.

  6. Kiraan ID maksimum 100.
    Ini adalah had praktikal untuk mengelakkan beban pada antara muka dan memastikan responsif. Jika anda perlukan lebih banyak ID, lakukan penjanaan berulang.

Siapa yang Memerlukan Alat Ini?

  • Pembangun web yang membina API, penghala pendek, atau sistem yang memerlukan pengecam pendek dan selamat-URL.
    Contoh: ID untuk pautan pendek seperti https://s.id/abc123 boleh menggunakan Nano ID yang lebih pendek daripada UUID.

  • Arkitek sistem yang perlu menyesuaikan panjang dan set aksara mengikut kekangan format.
    Contoh: Jika pangkalan data hanya menerima aksara alfanumerik besar, anda boleh ubah alfabet kepada ABCDEFGHIJKLMNOPQRSTUVWXYZ.

  • Pengguna yang mementingkan privasi yang tidak mahu ID dijana di pelayan pihak ketiga.
    Oleh kerana penjanaan berlaku dalam pelayar, tiada risiko ID anda dipintas atau direkodkan.

  • Sesiapa yang membina sistem volum tinggi di mana ID yang lebih pendek mengurangkan ruang storan dan overhed penghantaran.
    Contoh: Menggunakan ID 12 aksara untuk mengindeks baris dalam pangkalan data NoSQL menjimatkan ruang berbanding UUID 36 aksara.

Aspek Penting: Panjang, Alfabet, dan Kebarangkalian Pelanggaran

Nano ID menggunakan gabungan panjang dan saiz alfabet untuk menentukan ruang ID yang mungkin. Formula asas:

bilangan ID unik yang mungkin = (saiz alfabet)^(panjang)

Contoh dengan nilai lalai:

  • Saiz alfabet lalai: 64 aksara (A-Za-z0-9_-)
  • Panjang lalai: 21
  • Jumlah ID unik yang mungkin: 64²¹ ≈ 1.2 × 10³⁸

Ini jauh lebih besar daripada jumlah UUID v4 (kira-kira 5.3 × 10³⁶), menjadikan risiko pelanggaran sangat rendah untuk kebanyakan aplikasi.

Bagaimana memilih panjang dan alfabet yang sesuai?

  • Jika anda perlukan ID yang sangat pendek (cth: 6 aksara) dan hanya menggunakan digit (10 aksara), jumlah ID unik ialah 10⁶ = 1,000,000 – sesuai untuk set data kecil.
  • Jika anda perlukan ID yang lebih selamat, gunakan alfabet penuh 64 aksara dengan panjang 21.
  • Elakkan aksara yang mudah dikelirukan seperti O, 0, l, 1 dengan memadamnya daripada medan alfabet.

Kesilapan biasa yang perlu dielakkan:

  • Menetapkan alfabet dengan hanya satu aksara – alat akan kosongkan hasil.
  • Menggunakan panjang terlalu pendek untuk set data besar – risiko pelanggaran meningkat.
  • Tidak menyemak aksara yang tidak selamat-URL – walaupun alat hanya menggunakan aksara lalai, pengubahsuaian alfabet mungkin memperkenalkan aksara seperti & atau ? yang memerlukan pengekodan dalam URL.

Soalan Lazim (FAQ)

1. Mengapa panjang lalai Nano ID ialah 21 aksara?

Panjang 21 aksara dengan alfabet 64 aksara memberikan keseimbangan antara kepadatan dan ketahanan pelanggaran. Ia menghasilkan ID yang lebih pendek daripada UUID (36 aksara) tetapi dengan jumlah kombinasi yang lebih besar (64²¹ berbanding 16³² untuk UUID v4). Ia juga cukup panjang untuk memastikan risiko pelanggaran yang boleh diabaikan dalam sistem yang menghasilkan jutaan ID.

2. Bolehkah saya menggunakan hanya digit (0-9) untuk menjana ID?

Ya. Anda boleh padamkan semua aksara lain dalam medan alfabet, tinggalkan hanya 0123456789. Panjang lalai 21 digit akan menghasilkan 10²¹ kombinasi – sangat besar. Walau bagaimanapun, ID yang terhasil hanya terdiri daripada digit, yang mungkin sukar dibaca oleh manusia tanpa sempang.

3. Apakah yang berlaku jika saya mengosongkan medan alfabet?

Alat akan mengesan bahawa alfabet kosong (atau hanya mengandungi satu aksara unik) dan memaparkan ralat “Alfabet perlu sekurang-kurangnya 2 aksara berbeza.”. Output ID dikosongkan, kiraan menjadi 0, dan butang salinan dilumpuhkan.

4. Adakah ID yang dijana benar-benar unik secara global?

ID yang dijana menggunakan crypto.getRandomValues adalah rawak dari segi kriptografi. Walau bagaimanapun, “unik” di sini bermaksud unik dalam set ID yang dihasilkan pada satu masa. Tidak ada jaminan bahawa ID yang sama tidak boleh dijana pada masa lain (oleh pengguna lain). Untuk kebanyakan aplikasi, ruang ID yang besar (64²¹) menjadikan pertindihan sangat mustahil, tetapi jika anda perlukan jaminan unik global, gunakan kaedah penjadualan berpusat seperti penjana terbitan masa (cth: ULID).

5. Berapa banyak ID yang boleh saya jana sekali gus?

Maksimum 100 ID pada satu masa. Ini had praktikal untuk mengelakkan antara muka menjadi perlahan. Jika anda perlukan lebih, lakukan penjanaan berulang.

6. Adakah alat ini selamat untuk menghasilkan token sesi?

Ya, kerana penjanaan menggunakan crypto.getRandomValues yang disediakan oleh pelayar, ia memenuhi keperluan rawak kriptografi. Tiada data dihantar ke pelayan, jadi token tidak terdedah semasa penjanaan. Namun, anda perlu menyimpan token dengan selamat di pelayan selepas penjanaan.