UltKit

Penjana UUID

Cipta UUID versi 4 rawak, antara satu hingga seratus pada satu masa, dan salin semuanya sebagai senarai. UUID ini dihasilkan oleh penjana rawak pelayar Anda yang selamat dari segi kriptografi, dan alat semakan menunjukkan versi serta varian bagi mana-mana UUID yang Anda tampal.

0 aksara · 0 perkataan · 0 baris

Berjalan sepenuhnya dalam tab pelayar ini. Teks Anda tidak pernah dimuat naik atau disimpan.

Versi UUID

Versi ialah digit pertama kumpulan ketiga; varian dikodkan dalam digit pertama kumpulan keempat (8, 9, a atau b bagi UUID RFC). Contoh ialah vektor ujian daripada RFC 9562.

VersiDibina daripadaContoh
v1Cap masa Gregorian + ID nod (MAC)c232ab00-9414-11ec-b3c8-9f6bdeced846
v3Hash MD5 bagi ruang nama + nama5df41881-3aed-3515-88a7-2f4a814cf09e
v4122 bit rawak919108f7-52d1-4320-9bac-f847db4148a8
v5Hash SHA-1 bagi ruang nama + nama2ed6657d-e927-568b-95e1-2665a8aea6a2
v6Cap masa v1 disusun semula supaya ID boleh diisih mengikut masa1ec9414c-232a-6b00-b3c8-9f6bdeced846
v7Milisaat Unix + bit rawak, boleh diisih017f22e2-79b0-7cc3-98c4-dc0c0c07398f
v8Susun atur tersuai yang ditakrifkan oleh aplikasi2489e9ad-2ee2-8e00-8ec9-32d5f69181c0

Apakah itu UUID dan cara membacanya

UUID (pengecam unik universal, dipanggil GUID dalam perisian Microsoft) ialah nombor 128-bit yang ditulis sebagai 32 digit heksadesimal dalam kumpulan 8-4-4-4-12, contohnya f47ac10b-58cc-4372-a567-0e02b2c3d479. Ia dipiawaikan dalam RFC 4122 pada 2005; pada Mei 2024 dokumen itu digantikan dengan RFC 9562, yang mengekalkan versi lama dan menambah tiga versi baharu. Dua kedudukan adalah tetap: digit pertama kumpulan ketiga ialah versi (4 dalam 4372), dan digit pertama kumpulan keempat menunjukkan varian, iaitu 8, 9, a atau b bagi setiap UUID yang mengikuti RFC.

Versi 4 mengisi 122 bit lain dengan data rawak. Ruangnya sangat besar sehingga anda perlu menjana kira-kira 2.7 kuintiliun (2.7 × 10¹⁸) UUID untuk mendapat peluang 50% berlakunya satu pendua, itulah sebabnya sistem boleh mencipta ID v4 secara bebas pada banyak mesin tanpa penyelarasan. Halaman ini menggunakan crypto.randomUUID, atau crypto.getRandomValues jika tiada, dan tidak sekali-kali Math.random, yang outputnya tidak direka supaya sukar diramal. Pilihan Huruf besar dan Tanpa tanda sempang hanya mengubah format; nilainya sama, dan kebanyakan penghurai menerima kedua-dua jenis huruf.

v4, v7 dan versi-versi lain

Versi 1 dan 6 dibina daripada cap masa dan ID nod, pada asalnya alamat MAC komputer, yang mendedahkan di mana dan bila ID itu dicipta. Versi 3 dan 5 menghasilkan cincangan ruang nama dan nama dengan MD5 atau SHA-1, jadi input yang sama sentiasa menghasilkan UUID yang sama. Versi 8 ialah susunan bebas untuk skema tersuai. Pendatang baharu yang paling penting ialah versi 7: ia bermula dengan cap masa Unix 48-bit dalam milisaat dan mengisi bakinya dengan bit rawak, supaya ID tersusun mengikut masa penciptaan.

Susunan itulah sebab untuk mempertimbangkan v7 sebagai kunci utama pangkalan data. Kunci v4 yang rawak jatuh merata pada indeks B-tree, memecahkan halaman dan menjejaskan lokaliti cache apabila jadual membesar, manakala kunci v7 tiba dalam susunan yang kira-kira meningkat seperti lajur tokokan automatik, namun masih boleh dijana tanpa pembilang pusat. Pilih v4 apabila anda mahu ID yang tidak mendedahkan apa-apa, termasuk bila ia dicipta; pilih v7 apabila prestasi sisipan dan susunan masa penting. UUID ialah pengecam, bukan rahsia: untuk kata laluan dan rahsia API gunakan penjana kata laluan khusus. Lebih banyak pengekod dan pemeriksa terdapat dalam alat pembangun.

Soalan lazim

Bolehkah dua UUID yang dijana secara rawak menjadi sama?
Secara teori ya, secara praktikal tidak. Dengan 122 bit rawak, walaupun satu bilion UUID v4 sesaat selama kira-kira 86 tahun hanya memberi peluang sekitar 50% untuk satu pelanggaran, dengan syarat sumber rawak itu baik.
Apakah perbezaan antara UUID dan GUID?
Pada dasarnya tiada beza. GUID ialah nama Microsoft untuk pengecam 128-bit yang sama. Sesetengah alat Microsoft memaparkan GUID dalam huruf besar atau dalam kurungan kerawang, yang diterima oleh penyemak di sini.
Bagaimanakah cara mengetahui versi sesuatu UUID?
Lihat digit pertama kumpulan ketiga: 4 bermaksud rawak, 7 bermaksud tersusun mengikut masa, 1 bermaksud cap masa tambah nod. Tampal ke dalam Semak UUID untuk melihat versi dan varian.
Patutkah saya menggunakan UUIDv7 dan bukannya v4 untuk kunci pangkalan data?
Selalunya ya. Kunci v7 tersusun mengikut masa, yang memastikan indeks B-tree padat dan sisipan pantas. Kekal dengan v4 jika masa penciptaan yang tertanam dalam ID v7 perlu dirahsiakan.
Adakah selamat menggunakan UUID sebagai token tetapan semula kata laluan?
UUID v4 daripada penjana selamat mempunyai 122 bit rawak, yang cukup untuk tidak dapat diteka, tetapi banyak pustaka menyediakan fungsi token khusus dengan tarikh luput yang jelas. Jangan sekali-kali gunakan versi berasaskan masa seperti v1 atau v7 sebagai rahsia.