KeroTools

Buat Pengenal UUID v4 Acak

Buat sebanyak mungkin UUID v4 acak yang Anda butuhkan untuk database dan kode, secara instan.

Nilainya tak pernah meninggalkan perangkat Anda

Tak ada yang dicatat di mana pun

Keacakan setingkat platform

Jalan di semua browser modern

Cara kerjanya

  1. 1

    Pilih versinya

    v4, kecuali pengenalnya akan masuk ke indeks basis data — dalam hal itu pertimbangkan v7.

  2. 2

    Pilih jumlahnya

    Satu untuk uji cepat, atau sekelompok untuk data seed dan fixture.

  3. 3

    Salin hasilnya

    Bawa ke sebuah skema, permintaan, berkas konfigurasi, atau pengujian.

Mengapa memakai alat ini

Versi 4 dan versi 7

Acak untuk penggunaan umum, atau terurut menurut cap waktu ketika nilainya menjadi kunci primer.

Keacakan kriptografis

Dihasilkan dari sumber acak aman milik browser, bukan dari fungsi pseudoacak yang bisa ditebak.

Pembangkitan massal

Satu pengenal atau seribu, dihasilkan dalam satu langkah dan siap ditempel ke berkas seed.

Dengan atau tanpa tanda hubung

Bentuk kanonis 36 karakter atau bentuk telanjang 32 karakter, mana pun yang diharapkan tujuannya.

Tidak ada yang dikirimkan

Nilainya dihasilkan di browser Anda, jadi tak ada pihak ketiga yang tahu pengenal mana yang Anda pakai.

Gratis tanpa akun

Tanpa pendaftaran, tanpa watermark, dan tanpa batas berapa banyak yang Anda hasilkan.

Versinya lebih penting daripada yang disadari kebanyakan orang

Orang berkata UUID dan memaksudkan versi 4, yaitu 122 bit acak dan tak ada yang lain. Itu bawaan yang tepat, tetapi ia bukan satu-satunya versi dan perbedaannya berkonsekuensi. Versi 1 membangun pengenalnya dari sebuah cap waktu dan alamat perangkat keras jaringan mesinnya, yang berarti UUID v1 diam-diam mengungkapkan kapan ia dibuat dan, secara historis, mesin mana yang membuatnya — tak masalah di dalam sebuah sistem, canggung pada apa pun yang bisa dilihat pelanggan. Versi 7, yang baru-baru ini distandarkan, mempertahankan keacakannya tetapi menaruh cap waktu milidetik di bit terdepan, sehingga nilainya terurut secara kronologis. Kalau Anda pernah menghasilkan UUID tanpa memikirkan jenisnya, itu hampir pasti v4, dan untuk sebagian besar penggunaan itulah jawaban yang benar. Pengecualiannya ada di bawah ini.

Pengenal acak berat bagi indeks basis data

Inilah fakta praktis paling berkonsekuensi tentang UUID dan ia mengejutkan orang yang beralih dari bilangan bulat. Indeks basis data adalah struktur terurut, dan struktur terurut menyukai nilai yang datang berurutan. Deretan bilangan bulat menempel di ujung indeks, menyentuh satu halaman berulang-ulang dan menahannya di memori. Aliran UUID v4 acak menurut rancangannya, jadi tiap penyisipan mendarat di tempat berbeda, memaksa indeksnya menulis ke halaman yang berserakan, membelahnya, dan menahan jauh lebih banyak strukturnya di cache agar bisa mengejar. Pada tabel besar perbedaannya terukur, dan gejalanya adalah kisah akrab tentang sistem yang melambat setelah mengadopsi kunci UUID. Versi 7 ada justru untuk ini: cap waktu terdepan membuat nilai baru terurut berdekatan, jadi penyisipannya kembali lokal sementara pengenalnya tetap tak bisa ditebak.

UUID bukan rahasia, kecuali Anda sengaja menjadikannya rahasia

Dua klaim tercampur di sini dan keduanya penting. Yang pertama, UUID v4 benar-benar tak bisa ditebak — 122 bit acak jauh di luar jangkauan tebakan paksa — tetapi hanya kalau keacakannya kriptografis. Banyak kode menghasilkan UUID dari fungsi acak serba guna yang cepat dan dapat diramalkan, dan pengenal dari sumber yang dapat diramalkan bisa didaftar habis oleh siapa pun yang memecahkan benihnya. Periksa apa yang dipakai pembangkit Anda. Yang kedua, bahkan v4 yang sempurna adalah pengenal dan bukan otorisasi. Memakai UUID tak tertebak sebagai tautan berbagi memang berhasil, dan itu berarti URL-nya adalah kata sandinya: ia akan duduk di riwayat browser, di header perujuk, di log obrolan, dan di tiap surel yang meneruskannya. Itu rancangan yang bisa diterima untuk tautan dokumen dan tak bisa diterima untuk apa pun yang perlu dicabut.

Apa yang sebenarnya dikatakan jaminan tabrakan

Alasan UUID bekerja tanpa koordinasi adalah sebuah argumen probabilitas, dan angkanya layak diketahui supaya Anda berhenti mengkhawatirkannya. Dengan 122 bit acak, Anda perlu menghasilkan kira-kira 2,7 kuintiliun UUID versi 4 sebelum ada peluang 50 persen bahwa dua di antaranya cocok. Pada laju sejuta per detik itu puluhan ribu tahun, dan itulah sebabnya sistem di dua ujung dunia bisa mencetak pengenal tanpa daftar pusat dan tanpa pernah berkoordinasi. Yang sepenuhnya menjadi sandaran jaminan itu adalah kualitas keacakannya. Pembangkit yang lemah atau berbenih buruk meruntuhkan angka itu tanpa peringatan apa pun, dan UUID kembar di produksi hampir selalu berpangkal pada sumber yang cacat alih-alih nasib buruk — beberapa insiden terkenal melibatkan perangkat yang memberi benih identik pada sumber acaknya saat menyala.

Menyimpannya lebih mahal daripada dugaan Anda

UUID berukuran 128 bit — 16 bita — tetapi bentuk yang biasanya Anda lihat adalah 36 karakter teks, karena representasi kanonisnya menulis tiap bita sebagai dua digit heksadesimal dan menambahkan empat tanda hubung. Simpan itu sebagai string dan Anda memakai 36 bita per baris alih-alih 16, ditambah apa pun yang ditambahkan basis data Anda untuk kolom berpanjang variabel, dan tiap indeks pada kolom itu membawa penggembungan yang sama. Pada tabel beberapa ribu baris tak seorang pun memperhatikan. Pada tabel seratus juta baris, di sebuah indeks yang harus tetap di memori, itu perbedaan antara muat dan tak muat. Kebanyakan basis data punya tipe asli 16 bita persis karena alasan ini, dan memakainya biasanya keputusan yang tepat. Rincian pemformatan kecil saja dibandingkan itu: tanda hubung bersifat konvensional bukan wajib, perbandingannya tak peka huruf besar-kecil, dan huruf kecil adalah keluaran kanonisnya.

Kenapa membangkitkan secara lokal penting bahkan untuk nilai acak

Wajar menanyakan apa hubungan privasi dengan sebuah angka acak, dan jawabannya adalah bahwa angka itu berhenti anonim begitu ia terikat pada sesuatu. Pembangkit yang dihosting melihat tiap pengenal yang ia keluarkan dan bisa mencatatnya berikut alamat peminta dan waktunya. Kalau UUID itu kemudian menjadi nomor pesanan, tautan berbagi, kunci API, atau pengenal basis data di sistem Anda, ada orang lain yang memegang daftar nilai yang sah dan gambaran bagus tentang milik apa nilai-nilai itu. Itu risiko kecil dan sepenuhnya tak perlu, karena membangkitkan secara lokal menghapusnya sama sekali: browser Anda punya sumber acak kriptografis bawaan, nilainya tak pernah meninggalkan halaman, dan Anda bisa memastikan tak ada permintaan yang dibuat di tab Network pada developer tools.

Kesalahan umum yang sebaiknya dihindari

  • Memakai UUID v4 sebagai kunci primer pada tabel besar. Nilai acak menyerakkan penulisan indeks dan memfragmentasi strukturnya — pakai v7, yang cap waktu terdepannya menjaga penyisipan tetap lokal sekaligus tak tertebak.
  • Menghasilkan UUID dari fungsi acak serba guna. Hanya sumber kriptografis yang membuatnya tak tertebak; benih yang dapat diramalkan berarti penyerang bisa mendaftar habis pengenalnya.
  • Memperlakukan UUID tak tertebak sebagai otorisasi. Tautan berbagi yang dibangun darinya berarti URL-nya adalah kata sandinya, dan URL berakhir di riwayat, header perujuk, dan surel yang diteruskan.
  • Menyimpan UUID sebagai string 36 karakter dalam skala besar. Nilainya 16 bita; bentuk teksnya lebih dari melipatgandakan itu di tiap baris dan tiap indeks — kebanyakan basis data punya tipe asli.
  • Memakai v1 pada apa pun yang dilihat pelanggan. Ia mengodekan waktu pembuatan dan secara historis alamat perangkat keras jaringan mesinnya, lebih banyak daripada yang perlu diungkap sebuah pengenal.

Perbandingan

AspekAlat iniPembangkit daringPemanggilan pustaka
Nilai dikirim atau dicatatTidak pernahMungkinTidak
v7 tersediaYaJarangTergantung pustakanya
Keacakan kriptografisYaUmumnya tak dinyatakanUmumnya ya
Pembangkitan massalYaKadangYa
Jalan tanpa membuka proyekYaYaTidak
HargaGratisGratis / paket berbayarGratis

Fitur

UUID v4

Versi 122 bit acak yang dimaksud kebanyakan sistem ketika mereka menyebut UUID.

UUID v7

Berawalan cap waktu dan karenanya bisa diurutkan, yang memang diinginkan indeks basis data.

Huruf besar atau kecil

Bentuk kanonisnya huruf kecil; sebagian sistem bersikeras huruf besar, dan keduanya ada di sini.

Membangkitkan massal

Ratusan sekaligus, satu per baris, siap untuk skrip seed atau kolom lembar sebar.

Memakai CSPRNG platform

Nilainya datang dari pembangkit kriptografis browser alih-alih pembangkit serba guna.

Seketika, tanpa permintaan

Tak ada yang diambil, jadi pembangkitannya langsung dan berjalan dengan tab yang sudah termuat.

Tanpa instalasi

Tanpa pustaka, tanpa runtime, tanpa dependensi — jalan di halaman web.

Ramah Arab dan RTL

Antarmuka lengkap dalam delapan bahasa, termasuk Arab kanan-ke-kiri.

Aman secara bawaan

Disajikan lewat HTTPS, tanpa pelacakan dan tanpa permintaan ke pihak ketiga.

Siapa yang memakainya

Pengembang

Mendapat pengenal yang sah untuk sebuah fixture atau baris basis data manual tanpa membuka konsol.

Insinyur basis data

Menghasilkan nilai v7 ketika sebuah tabel butuh kunci tak tertebak yang tetap terindeks dengan baik.

Insinyur QA

Membangkitkan sekelompok pengenal unik untuk data uji dalam satu langkah.

Integrator API

Membuat kunci idempotensi atau pengenal korelasi untuk sebuah permintaan.

Pertanyaan yang Sering Diajukan

Tidak. Semuanya berjalan lokal di browser Anda — teks Anda tidak pernah diunggah, disimpan, atau dibagikan.

Ya — sepenuhnya gratis, tanpa akun dan tanpa batas.