Alat pembangun · UUID penjana
Membaca UUID dengan Tangan: Tempat Versi dan Bit Varian Hidup
· Bagaimana ia berfungsi
uuid kriptografi pelayar-apis
Dua aksara heks dalam setiap UUID memberitahu anda versi mana yang menghasilkannya dan reka letak varian mana yang diikuti. Belajar untuk membacanya sepintas lalu dan mengetahui apa yang mereka tidak boleh beritahu anda.
Sistem manakah yang membuat ID ini? — soalan log-forensik yang versi nibble boleh jawab
A UUID rentetan mempunyai 36 aksara: tiga puluh dua digit heksadesimal dan empat sempang dalam kedudukan 8-4-4-4-12. Dua watak dalam setiap UUID-muncul pada kedudukan 14 dan 19—encode metadata: medan versi memberitahu anda algoritma yang menjana ID dan medan varian memberitahu anda reka letak standard yang mana ia ikuti. Membaca dua aksara ini tanpa alat adalah kemahiran forensik log: anda melihat a UUID dalam pembuangan pangkalan data atau mesej ralat dan segera ketahui sama ada ia adalah cap waktu v1 (yang membocorkan masa penciptaan), nilai rawak v4 (yang dijana daripada CSPRNG), atau sesuatu yang lain. Nombor versi menduduki bit 48–51 daripada UUID, yang memetakan kepada aksara heksadesimal pertama kumpulan ketiga.
Susun atur 128-bit dalam lima kumpulan — bagaimana 8-4-4-4-12 memetakan ke bait dan sebab kumpulan itu bersejarah, tidak berfungsi
Untuk rentetan xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx, aksara pada kedudukan 14 ialah versinya. RFC 9562 mentakrifkan versi 1 hingga 8: v1 adalah berasaskan masa Gregorian dan masa penciptaan bocor; v4 adalah rawak; v7 adalah berasaskan masa Unix dan boleh disusun. Versi 0, 9 dan lebih tinggi adalah dikhaskan atau tidak digunakan. Jika anda melihat v1 UUID, anda tahu masa dan alamat perkakasan bercampur; jika anda melihat v4, ID ialah bait rawak dengan bit versi ditetapkan; jika anda melihat v7, ia diisih mengikut masa penciptaan. Versi bukan pilihan; setiap UUID yang dibentuk dengan betul mempunyai satu. Medan varian menduduki bit 64–65 daripada UUID, dua bit paling ketara bagi oktet 8.
Versi nibble — watak pertama kumpulan ketiga, maksud 1 hingga 8 dan apa yang ditunjukkan oleh 0 atau 9 di sana
Dalam perwakilan teks xxxxxxxxx-xxxx-xxxx-Nxxx-xxxxxxxxxxxx, aksara pertama kumpulan keempat (kedudukan 19) mengekod varian. Untuk varian RFC 9562 (standard dalam penggunaan moden), aksara ini mestilah 8, 9, a atau b—wakil perenambelasan 1000, 1010, dan 1001, dan 1011 dalam binari. Sebarang aksara lain (0–7, c–f) menunjukkan varian yang berbeza: 0–7 ialah NCS keserasian ke belakang; c–d ialah GUID warisan Microsoft dengan susunan bait kecil-endian; e–f dikhaskan. Apabila anda membaca kedudukan 19 dan melihat 8, 9, a atau b, anda sedang melihat RFC 9562 UUID. Sebarang nilai lain bermakna bait mengikut tafsiran yang berbeza. Reka letak 128-bit terbahagi kepada oktet 0–15, tetapi format teks memisahkannya mengikut kumpulan untuk kebolehbacaan, bukan berfungsi.
Medan varian — sebab watak pertama kumpulan keempat ialah 8, 9, a atau b untuk RFC UUID, dan apa c/d (Microsoft legacy) atau 0–7 (NCS) isyarat
Lima kumpulan mewakili sempadan medan sejarah: tiga medan pertama mengandungi cap masa dan versi dalam UUID v1, medan keempat memegang jujukan dan varian jam, medan kelima memegang pengecam nod. Versi 4 dan versi UUID yang lebih baru tidak menggunakan nama medan ini, tetapi kedudukan bit yang sama masih membawa versi dan varian. Membaca v4 UUID bermakna menerima bahawa kebanyakan 128 bits adalah muatan rawak, tetapi dua daripadanya—pada kedudukan 14 dan 19 dalam teks—ditetapkan mengikut standard. Bit tetap tersebut membuktikan ID ialah v4 dan RFC-varian. Tiada UUID ialah 00000000-0000-0000-0000-000000000000, semua sifar dan tidak membawa versi sama sekali. Maksimum UUID ialah ffffffff-ffff-ffff-ffff-ffffffffffff, semua aksara f, dan juga dikhaskan dan dinyahversi.
Contoh yang berkesan — menyahkod tiga pengecam sampel aksara mengikut aksara, termasuk v4 dan v7
Setiap UUID lain yang dibentuk dengan baik mempunyai versi dalam kumpulan ketiga dan varian dalam kumpulan keempat. Uji diri anda dengan tiga ID sampel: 123e4567-e89b-12d3-a456-426614174000 (v1, varian RFC kerana kedudukan 19 ialah a); 9b2e4f1a-4f3e-4c1a-8a7d-1b2c3d4e5f60 (v4, varian RFC kerana kedudukan 19 ialah 8); 018f0c2e-1b5a-7c3d-9e4f-5a6b7c8d9e0f (v7, varian RFC kerana kedudukan 19 ialah 9). Pemeriksa ToolAcre mengesahkan bacaan anda. Semakan format tidak boleh memberitahu anda bahawa ID adalah unik, wujud dalam pangkalan data anda atau dijana dengan selamat. Versi v1 menggunakan masa dan perkakasan sebagai input, jadi UUID v1 yang sama daripada mesin berbeza bermakna jam condong atau isu penyegerakan. Versi v4 adalah rawak, jadi v4 pendua UUID bermaksud sama ada rawak rosak atau perlanggaran yang tidak mungkin secara astronomi (kira-kira satu setiap 2. 7 trilion UUID dengan rawak bunyi).
Nil dan Max — dua nilai semua-sifar dan semua-F yang tidak membawa versi sama sekali
Versi 0 atau 9 bermaksud rentetan itu bukan UUID sama sekali. Membaca versi dan varian ialah langkah pertama dalam memahami maksud ID; menyemak sama ada ia wujud atau unik ialah langkah kedua dan ketiga, dilakukan oleh pangkalan data dan logik perniagaan anda. Memahami kedudukan bit membantu nyahpepijat migrasi data. Apabila mengimport UUID daripada sistem warisan, sesetengah alat mengeksport medan varian yang tidak sepadan dengan standard RFC 9562. Medan varian c atau d menunjukkan Microsoft GUID dalam susunan bait kecil-endian. GUID ini ialah pengecam yang sah dalam sistem Microsoft tetapi tidak beroperasi dengan RFC 9562 UUID tanpa penukaran tertib bait. Kedudukan membaca 19 memberitahu anda dengan segera sistem yang menjana ID. Jika anda melihat 8, 9, a atau b, anda mempunyai RFC standard UUID.
Perkara yang tidak dapat diberitahu oleh semakan format kepada anda — bahawa ID itu wujud dalam pangkalan data anda, bahawa ia dijana dengan selamat atau bahawa ia unik
Jika anda melihat c atau d, anda mempunyai Microsoft GUID. Jika anda melihat sebarang aksara lain, pengecam adalah salah bentuk atau daripada sistem yang tidak jelas. ToolAcre penjana sentiasa menghasilkan RFC 9562 UUID dengan kedudukan 19 sebagai salah satu daripada 8, 9, a, atau b. Medan versi tiga bit mengekod tujuh nilai yang mungkin (1–7; versi 0 dan 8 mempunyai makna khusus). Versi 1 ialah cap waktu Gregorian, versi 3 ialah MD5-ruang nama berasaskan, versi 4 adalah rawak, versi 5 ialah SHA-1-ruang nama berasaskan, versi 6 adalah versi berasaskan Unix-cap masa (dicadangkan). 7 adalah berasaskan Unix-cap masa boleh diisih (disediakan dalam RFC 9562), versi 8 dikhaskan untuk format tersuai. Membaca kedudukan-14 aksara serta-merta memberitahu anda algoritma yang digunakan. Jika anda sedang menyahpepijat UUID perlanggaran atau jenis yang tidak dijangka, nombor versi ialah petunjuk pertama anda. ToolAcre menjana UUID v4 secara eksklusif daripada crypto.
Bawa pulang: dua aksara, banyak konteks — gunakan semakan ToolAcre yang terbentuk dengan baik untuk mengesahkan penghuraian rentetan, kemudian baca versi nibble sendiri
getRandomValues; setiap UUID yang dihasilkan mempunyai 4 pada kedudukan 14. Menghuraikan struktur UUID dengan tangan ialah kemahiran yang berguna untuk menyahpepijat sistem kompleks di mana alat tidak tersedia. Dalam kejadian pengeluaran, anda mungkin perlu membaca UUID daripada longgokan pangkalan data, log ralat atau cache tanpa menjalankan alat khas. Anda mencari kedudukan 14 untuk mengenal pasti versi (adakah masa bocor? adakah ia rawak? adakah ia boleh disusun? ). Anda mencari kedudukan 19 untuk mengenal pasti varian (adakah standard RFC? adakah ia Microsoft GUID? adakah ia terpelihara? ). Kedua-dua aksara ini, daripada jumlah 36, membawa metadata. Baki 34 aksara ialah muatan: cap masa atau bait rawak atau data khusus algoritma lain. Mengetahui apa yang diwakili oleh muatan membantu anda memahami peranan ID dalam sistem anda.