Alat pengembang · generator UUID
Membaca UUID dengan Tangan: Dimana Versi dan Varian Bits Live
· Cara kerjanya
uuid kriptografi browser-apis
Dua karakter hex di setiap UUID memberi tahu Anda versi mana yang memproduksinya dan varian tata letak yang diikutinya. Belajarlah untuk membacanya sekilas dan mengetahui apa yang tidak dapat mereka ceritakan kepada Anda.
Sistem mana yang membuat ID ini? — pertanyaan log-forensik yang dapat dijawab oleh versi nibble
String UUID memiliki 36 karakter: tiga puluh dua digit heksadesimal dan empat tanda hubung pada posisi 8-4-4-4-12. Dua karakter di setiap UUID—muncul di posisi 14 dan 19—mengkodekan metadata: bidang versi memberi tahu Anda algoritme mana yang menghasilkan ID, dan bidang varian memberi tahu Anda tata letak standar mana yang diikutinya. Membaca dua karakter ini tanpa alat adalah keterampilan forensik log: Anda melihat UUID di dump database atau pesan kesalahan dan segera mengetahui apakah itu stempel waktu v1 (yang membocorkan waktu pembuatan), nilai acak v4 (yang dihasilkan dari CSPRNG), atau yang lainnya. Nomor versi menempati bit 48–51 dari UUID, yang dipetakan ke karakter heksadesimal pertama dari grup ketiga.
Tata letak 128-bit dalam lima grup — bagaimana 8-4-4-4-12 dipetakan ke dalam byte dan mengapa grup tersebut bersifat historis, bukan fungsional
Untuk string xxxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx, karakter pada posisi 14 adalah versinya. RFC 9562 mendefinisikan versi 1 hingga 8: v1 berbasis waktu Gregorian dan membocorkan waktu pembuatan; v4 acak; v7 berbasis waktu Unix dan dapat diurutkan. Versi 0, 9, dan lebih tinggi dicadangkan atau tidak digunakan. Jika Anda melihat UUID v1, Anda tahu waktu dan alamat perangkat keras tercampur; jika Anda melihat v4, ID-nya adalah byte acak dengan bit versi yang disetel; jika Anda melihat v7, itu diurutkan berdasarkan waktu pembuatan. Versi ini bukan opsional; setiap UUID yang terbentuk dengan benar memilikinya. Bidang varian menempati bit 64–65 dari UUID, dua bit paling signifikan dari oktet 8.
Versi camilan — karakter pertama dari grup ketiga, apa arti 1 hingga 8, dan apa yang ditunjukkan oleh 0 atau 9 di sana
Dalam representasi teks xxxxxxxx-xxxx-xxxx-Nxxx-xxxxxxxxxxxx, karakter pertama dari grup keempat (posisi 19) mengkodekan varian. Untuk varian RFC 9562 (standar dalam penggunaan modern), karakter ini harus berupa 8, 9, a, atau b—representasi heksadesimal dari 1000, 1001, 1010, dan 1011 dalam biner. Karakter lainnya (0–7, c–f) menunjukkan varian yang berbeda: 0–7 adalah NCS kompatibilitas ke belakang; c–d adalah GUID lama Microsoft dengan urutan byte little-endian; e – f dicadangkan. Saat Anda membaca posisi 19 dan melihat 8, 9, a, atau b, Anda sedang melihat RFC 9562 UUID. Nilai lainnya berarti byte mengikuti interpretasi yang berbeda. Tata letak 128-bit dibagi menjadi oktet 0–15, tetapi format teks memisahkannya berdasarkan kelompok agar mudah dibaca, bukan fungsinya.
Bidang varian — mengapa karakter pertama dari grup keempat adalah 8, 9, a atau b untuk RFC UUID, dan apa sinyal c/d (Microsoft legacy) atau 0–7 (NCS)
Kelima grup mewakili batas bidang historis: tiga bidang pertama berisi stempel waktu dan versi dalam UUID v1, bidang keempat berisi urutan dan varian jam, bidang kelima berisi pengidentifikasi node. Versi 4 dan versi UUID yang lebih baru tidak menggunakan nama bidang ini, namun posisi bit yang sama tetap membawa versi dan varian. Membaca UUID v4 berarti menerima bahwa sebagian besar 128 bits adalah muatan acak, namun dua di antaranya—di posisi 14 dan 19 dalam teks—ditetapkan menurut standar. Bit tetap tersebut membuktikan bahwa ID adalah varian v4 dan RFC. Nihil UUID adalah 00000000-0000-0000-0000-000000000000, semuanya nol, dan tidak membawa versi sama sekali. Maks UUID adalah ffffffff-ffff-ffff-ffff-ffffffffffff, semua karakter f, dan juga dicadangkan dan tidak berversi.
Contoh praktis — mendekode tiga pengidentifikasi sampel karakter demi karakter, termasuk v4 dan v7
Setiap UUID lainnya yang terbentuk dengan baik memiliki versi di kelompok ketiga dan varian di kelompok keempat. Uji diri Anda dengan tiga ID sampel: 123e4567-e89b-12d3-a456-426614174000 (v1, varian RFC karena posisi 19 adalah a); 9b2e4f1a-4f3e-4c1a-8a7d-1b2c3d4e5f60 (v4, varian RFC karena posisi 19 adalah 8); 018f0c2e-1b5a-7c3d-9e4f-5a6b7c8d9e0f (v7, varian RFC karena posisi 19 adalah 9). Inspektur ToolAcre mengonfirmasi pembacaan Anda. Pemeriksaan format tidak dapat memberi tahu Anda bahwa suatu ID unik, ada di database Anda, atau dibuat dengan aman. Versi v1 menggunakan waktu dan perangkat keras sebagai input, sehingga UUID v1 yang identik dari mesin yang berbeda berarti jam miring atau masalah sinkronisasi. Versi v4 bersifat acak, jadi duplikat v4 UUID berarti keacakan yang rusak atau tabrakan yang sangat tidak mungkin terjadi (kira-kira satu per 2.7 triliun UUID dengan keacakan suara).
Nil dan Max - dua nilai yang semuanya nol dan semua F yang tidak memiliki versi sama sekali
Versi 0 atau 9 berarti string tersebut sama sekali bukan UUID yang valid. Membaca versi dan variannya adalah langkah pertama untuk memahami apa itu ID; memeriksa apakah itu ada atau unik adalah langkah kedua dan ketiga, yang dilakukan oleh database dan logika bisnis Anda. Memahami posisi bit membantu men-debug migrasi data. Saat mengimpor UUID dari sistem lama, beberapa alat mengekspor bidang varian yang tidak cocok dengan standar RFC 9562. Bidang varian c atau d menunjukkan Microsoft GUID dalam urutan byte little-endian. GUID ini adalah pengidentifikasi yang valid dalam sistem Microsoft tetapi tidak berinteroperasi dengan RFC 9562 UUID tanpa konversi urutan byte. Posisi membaca 19 segera memberi tahu Anda sistem mana yang menghasilkan ID. Jika Anda melihat 8, 9, a, atau b, Anda memiliki RFC standar UUID.
Apa yang tidak dapat diketahui oleh pemeriksaan format — bahwa ID tersebut ada di database Anda, bahwa ID tersebut dibuat dengan aman, atau bahwa ID tersebut unik
Jika Anda melihat c atau d, Anda memiliki Microsoft GUID. Jika Anda melihat karakter lain, format pengenalnya salah atau berasal dari sistem yang tidak jelas. Generator ToolAcre selalu menghasilkan RFC 9562 UUID dengan posisi 19 sebagai salah satu dari 8, 9, a, atau b. Bidang versi tiga-bit mengkodekan tujuh kemungkinan nilai (1–7; versi 0 dan 8 memiliki arti khusus). Versi 1 adalah stempel waktu Gregorian, versi 3 adalah namespace berbasis MD5, versi 4 adalah namespace acak, versi 5 adalah namespace berbasis SHA-1, versi 6 berbasis stempel waktu Unix (diusulkan), versi 7 dapat diurutkan berdasarkan stempel waktu Unix (distandarisasi dalam RFC 9562), versi 8 dicadangkan untuk format khusus. Membaca karakter position-14 akan segera memberi tahu Anda algoritma mana yang digunakan. Jika Anda men-debug UUID tabrakan atau jenis yang tidak terduga, nomor versi adalah petunjuk pertama Anda. ToolAcre menghasilkan UUID v4 secara eksklusif dari kripto.
Kesimpulan: dua karakter, banyak konteks — gunakan tanda centang ToolAcre yang dibuat dengan baik untuk mengonfirmasi penguraian string, lalu baca sendiri versinya.
dapatkan Nilai Acak; setiap UUID yang dihasilkannya memiliki 4 pada posisi 14. Mengurai struktur UUID dengan tangan adalah keterampilan yang berguna untuk melakukan debug pada sistem kompleks yang tidak memiliki alat. Dalam insiden produksi, Anda mungkin perlu membaca UUID dari dump database, log kesalahan, atau cache tanpa menjalankan alat khusus. Anda mencari posisi 14 untuk mengidentifikasi versinya (apakah ini waktu bocor? apakah acak? apakah dapat diurutkan? ). Anda mencari posisi 19 untuk mengidentifikasi varian (apakah ini standar RFC? apakah ini Microsoft GUID? apakah sudah dipesan? ). Kedua karakter ini, dari total 36, membawa metadata. Karakter 34 yang tersisa adalah muatan: stempel waktu atau byte acak atau data khusus algoritme lainnya. Mengetahui apa yang diwakili oleh payload membantu Anda memahami peran ID dalam sistem Anda.