ไทย

เครื่องมือสำหรับนักพัฒนา · ตัวสร้าง UUID

การอ่าน UUID ด้วยมือ: เวอร์ชันและตัวแปร Bits อยู่ที่ใด

· มันทำงานอย่างไร

uuid การเข้ารหัส เบราว์เซอร์-apis

สตริง UUID ที่มีเวอร์ชัน nibble (ตำแหน่ง 14) และฟิลด์รูปแบบ (ตำแหน่ง 19) ไฮไลต์ไว้เพื่อแสดงว่าอักขระฐานสิบหกตัวใดเปิดเผยประเภท ID
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

อักขระฐานสิบหกสองตัวในทุก ๆ UUID จะบอกคุณว่าเวอร์ชันใดที่ผลิตและรูปแบบรูปแบบใดที่ตามมา เรียนรู้ที่จะอ่านอย่างรวดเร็วและรู้ว่าสิ่งที่พวกเขาไม่สามารถบอกคุณได้

ระบบไหนสร้าง ID นี้ขึ้นมา? — คำถามเชิงนิติเวชที่เวอร์ชันตอดสามารถตอบได้

สตริง UUID มีอักขระ 36: เลขฐานสิบหกสามสิบสองหลักและขีดกลางสี่ตัวในตำแหน่ง 8-4-4-4-12 อักขระสองตัวในทุก ๆ UUID ปรากฏที่ตำแหน่ง 14 และ 19 เข้ารหัสข้อมูลเมตา: ช่องเวอร์ชันจะบอกคุณว่าอัลกอริทึมใดที่สร้าง ID และช่องรูปแบบจะบอกคุณว่ารูปแบบมาตรฐานใดที่เป็นไปตามรูปแบบมาตรฐาน การอ่านอักขระสองตัวนี้โดยไม่มีเครื่องมือถือเป็นทักษะด้านนิติเวชของบันทึก: คุณมองเห็น UUID ในดัมพ์ฐานข้อมูลหรือข้อความแสดงข้อผิดพลาด และรู้ได้ทันทีว่าเป็นการประทับเวลา v1 (ซึ่งทำให้เวลาในการสร้างรั่วไหล) ค่าสุ่ม v4 (ซึ่งสร้างจาก CSPRNG) หรืออย่างอื่น หมายเลขเวอร์ชันครอบครองบิต 48–51 ของ UUID ซึ่งจับคู่กับอักขระเลขฐานสิบหกตัวแรกของกลุ่มที่สาม

เค้าโครง 128 บิตในห้ากลุ่ม — วิธีที่ 8-4-4-4-12 แมปไปยังไบต์ และเหตุใดกลุ่มจึงมีประวัติ ไม่สามารถใช้งานได้

สำหรับสตริง xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx อักขระที่ตำแหน่ง 14 คือเวอร์ชัน RFC 9562 กำหนดเวอร์ชัน 1 ถึง 8: v1 ตามเวลาเกรกอเรียนและเวลาในการสร้างรั่วไหล v4 เป็นการสุ่ม v7 เป็นแบบอิงตามเวลา Unix และสามารถจัดเรียงได้ เวอร์ชัน 0, 9 และสูงกว่า สงวนไว้หรือไม่ได้ใช้ หากคุณเห็น v1 UUID คุณจะรู้ว่าเวลาและที่อยู่ฮาร์ดแวร์ปะปนกัน หากคุณเห็น v4 แสดงว่า ID จะเป็นไบต์แบบสุ่มพร้อมบิตเวอร์ชันที่ตั้งค่าไว้ หากคุณเห็น v7 ระบบจะจัดเรียงตามเวลาที่สร้าง เวอร์ชันนี้ไม่ใช่ทางเลือก ทุก ๆ รูปแบบที่ถูกต้อง UUID มีหนึ่งรายการ ฟิลด์ตัวแปรจะใช้บิต 64–65 ของ UUID ซึ่งเป็นสองบิตที่สำคัญที่สุดของออคเต็ต 8

เวอร์ชัน nibble — อักขระตัวแรกของกลุ่มที่สาม 1 ถึง 8 หมายถึงอะไร และ 0 หรือ 9 บ่งบอกอะไร

ในการแสดงข้อความ xxxxxxxx-xxxx-xxxx-Nxxx-xxxxxxxxxxxx อักขระตัวแรกของกลุ่มที่สี่ (ตำแหน่ง 19) จะเข้ารหัสตัวแปร สำหรับตัวแปร RFC 9562 (มาตรฐานในการใช้งานสมัยใหม่) อักขระนี้ต้องเป็น 8, 9, a หรือ b ซึ่งเป็นการแสดงเลขฐานสิบหกของ 1000, 1001, 1010 และ 1011 ใน ไบนารี่ อักขระอื่นๆ (0–7, c–f) บ่งบอกถึงรูปแบบที่แตกต่างกัน: 0–7 มี NCS ความเข้ากันได้แบบย้อนหลัง; c–d คือ GUID ดั้งเดิมของ Microsoft ที่มีลำดับไบต์แบบ little-endian e-f ถูกสงวนไว้ เมื่อคุณอ่านตำแหน่ง 19 และเห็น 8, 9, a หรือ b คุณกำลังดู RFC 9562 UUID ค่าอื่นใดหมายถึงไบต์มีการตีความที่แตกต่างกัน เค้าโครง 128 บิตแบ่งออกเป็นออคเท็ต 0–15 แต่รูปแบบข้อความจะแยกออกตามกลุ่มเพื่อให้อ่านได้ ไม่ใช่ฟังก์ชัน

ช่องตัวแปร — เหตุใดอักขระตัวแรกของกลุ่มที่สี่จึงเป็น 8, 9, a หรือ b สำหรับ RFC UUID และสัญญาณ c/d (Microsoft ดั้งเดิม) หรือ 0–7 (NCS) ใด

กลุ่มทั้งห้าแสดงถึงขอบเขตของฟิลด์ในอดีต โดยสามฟิลด์แรกประกอบด้วยการประทับเวลาและเวอร์ชันใน v1 UUID ฟิลด์ที่สี่เก็บลำดับนาฬิกาและตัวแปร ฟิลด์ที่ห้าเก็บตัวระบุโหนด เวอร์ชัน 4 และใหม่กว่า UUID เวอร์ชันไม่ได้ใช้ชื่อฟิลด์เหล่านี้ แต่ตำแหน่งบิตเดียวกันยังคงมีเวอร์ชันและตัวแปรอยู่ การอ่าน v4 UUID หมายถึงการยอมรับว่า 128 bits ส่วนใหญ่เป็นเพย์โหลดแบบสุ่ม แต่สองรายการในนั้น - ที่ตำแหน่ง 14 และ 19 ในข้อความ - ได้รับการแก้ไขตามมาตรฐาน บิตคงที่เหล่านั้นพิสูจน์ว่า ID เป็น v4 และ RFC-variant ศูนย์ UUID คือ 00000000-0000-0000-0000-000000000000 เป็นศูนย์ทั้งหมด และไม่มีเวอร์ชันใดๆ เลย UUID สูงสุดคือ ffffffff-ffff-ffff-ffff-ffffffffffff ซึ่งเป็นอักขระ f ทั้งหมด และยังสงวนไว้และไม่มีเวอร์ชันอีกด้วย

ตัวอย่างการทำงาน — ถอดรหัสตัวระบุตัวอย่างสามตัวทีละอักขระ รวมถึง v4 และ v7

UUID ที่มีรูปแบบดีอื่นๆ ทุกรายการมีเวอร์ชันในกลุ่มที่สามและรูปแบบในกลุ่มที่สี่ ทดสอบตัวเองด้วยรหัสตัวอย่างสามรายการ: 123e4567-e89b-12d3-a456-426614174000 (v1, รูปแบบ RFC เนื่องจากตำแหน่ง 19 คือ a); 9b2e4f1a-4f3e-4c1a-8a7d-1b2c3d4e5f60 (v4, ตัวแปร RFC เพราะตำแหน่ง 19 คือ 8); 018f0c2e-1b5a-7c3d-9e4f-5a6b7c8d9e0f (v7, ตัวแปร RFC เพราะตำแหน่ง 19 คือ 9) ผู้ตรวจสอบ ToolAcre ยืนยันการอ่านของคุณ การตรวจสอบรูปแบบไม่สามารถบอกคุณได้ว่า ID นั้นไม่ซ้ำกัน มีอยู่ในฐานข้อมูลของคุณ หรือถูกสร้างขึ้นอย่างปลอดภัย เวอร์ชัน v1 ใช้เวลาและฮาร์ดแวร์เป็นอินพุต ดังนั้น UUID v1 ที่เหมือนกันจากเครื่องที่แตกต่างกันจึงหมายถึงปัญหาการเอียงของนาฬิกาหรือการซิงโครไนซ์ เวอร์ชัน v4 เป็นการสุ่ม ดังนั้น v4 ที่ซ้ำกัน UUID หมายถึงการสุ่มที่เสียหายหรือการชนกันที่ไม่น่าเป็นไปได้ทางดาราศาสตร์ (ประมาณหนึ่งรายการต่อ 2. 7 ล้านล้าน UUID พร้อมการสุ่มเสียง)

Nil และ Max — ค่า all-zero และ all-F สองค่าที่ไม่มีเวอร์ชันใดๆ เลย

เวอร์ชัน 0 หรือ 9 หมายความว่าสตริงไม่ใช่ UUID ที่ถูกต้องเลย การอ่านเวอร์ชันและตัวแปรเป็นขั้นตอนแรกในการทำความเข้าใจว่า ID คืออะไร การตรวจสอบว่ามีอยู่หรือไม่ซ้ำกันนั้นเป็นขั้นตอนที่สองและสาม ดำเนินการโดยฐานข้อมูลและตรรกะทางธุรกิจของคุณ การทำความเข้าใจตำแหน่งบิตจะช่วยแก้ไขข้อบกพร่องในการย้ายข้อมูล เมื่อนำเข้า UUID จากระบบเดิม เครื่องมือบางอย่างจะส่งออกช่องรูปแบบที่ไม่ตรงกับมาตรฐาน RFC 9562 ฟิลด์ตัวแปรของ c หรือ d ระบุ Microsoft GUID ในลำดับไบต์แบบ little-endian GUID เหล่านี้เป็นตัวระบุที่ถูกต้องภายในระบบ Microsoft แต่ไม่ได้ทำงานร่วมกับ RFC 9562 UUID โดยไม่มีการแปลงลำดับไบต์ ตำแหน่งการอ่าน 19 จะบอกคุณทันทีว่าระบบใดที่สร้าง ID หากคุณเห็น 8, 9, a หรือ b แสดงว่าคุณมี RFC มาตรฐาน UUID

สิ่งที่การตรวจสอบรูปแบบไม่สามารถบอกคุณได้ ว่ามี ID อยู่ในฐานข้อมูลของคุณ ถูกสร้างขึ้นอย่างปลอดภัย หรือไม่ซ้ำกัน

หากคุณเห็น c หรือ d แสดงว่าคุณมี Microsoft GUID หากคุณเห็นอักขระอื่น แสดงว่าตัวระบุมีรูปแบบไม่ถูกต้องหรือมาจากระบบที่ไม่ชัดเจน ตัวสร้าง ToolAcre จะสร้าง RFC 9562 UUID ที่มีตำแหน่ง 19 เป็นหนึ่งใน 8, 9, a หรือ b เสมอ ฟิลด์เวอร์ชัน 3 บิตเข้ารหัสค่าที่เป็นไปได้เจ็ดค่า (1–7; เวอร์ชัน 0 และ 8 มีความหมายพิเศษ) เวอร์ชัน 1 เป็นการประทับเวลาแบบเกรกอเรียน เวอร์ชัน 3 คือเนมสเปซแบบอิง MD5 เวอร์ชัน 4 เป็นการสุ่ม เวอร์ชัน 5 คือเนมสเปซแบบอิง SHA-1 เวอร์ชัน 6 เป็นแบบอิงการประทับเวลาแบบ Unix (เสนอ) เวอร์ชัน 7 สามารถจัดเรียงตามการประทับเวลา Unix ได้ (เป็นมาตรฐานใน RFC 9562) เวอร์ชัน 8 สงวนไว้สำหรับรูปแบบที่กำหนดเอง การอ่านอักขระตำแหน่ง-14จะบอกคุณทันทีว่ามีการใช้อัลกอริทึมใด หากคุณกำลังดีบั๊กการชนกัน UUID หรือการเรียงลำดับที่ไม่คาดคิด หมายเลขเวอร์ชันคือเบาะแสแรกของคุณ ToolAcre สร้าง v4 UUID จาก crypto โดยเฉพาะ

ประเด็นสำคัญ: อักขระสองตัว มีบริบทมากมาย — ใช้ ToolAcre เช็คที่มีรูปแบบถูกต้องเพื่อยืนยันการแยกวิเคราะห์สตริง จากนั้นอ่านเวอร์ชันที่แทะด้วยตัวเอง

รับค่าสุ่ม; ทุกๆ UUID ที่ผลิตจะมี 4 ที่ตำแหน่ง 14 การแยกวิเคราะห์โครงสร้าง UUID ด้วยมือเป็นทักษะที่มีประโยชน์สำหรับการดีบักระบบที่ซับซ้อนซึ่งไม่มีเครื่องมือ ในเหตุการณ์การใช้งานจริง คุณอาจต้องอ่าน UUID จากดัมพ์ฐานข้อมูล บันทึกข้อผิดพลาด หรือแคชโดยไม่ต้องใช้เครื่องมือพิเศษ คุณมองหาตำแหน่ง 14 เพื่อระบุเวอร์ชัน (เวลารั่วหรือไม่ สุ่มหรือไม่ จัดเรียงได้หรือไม่ ) คุณมองหาตำแหน่ง 19 เพื่อระบุตัวแปร (เป็นมาตรฐาน RFC หรือไม่ เป็น Microsoft GUID หรือไม่ สงวนไว้หรือไม่ ) อักขระสองตัวนี้จากทั้งหมด 36 มีข้อมูลเมตา อักขระ 34 ที่เหลือคือเพย์โหลด: การประทับเวลาหรือไบต์แบบสุ่ม หรือข้อมูลเฉพาะอัลกอริทึมอื่นๆ การรู้ว่าเพย์โหลดหมายถึงอะไรจะช่วยให้คุณเข้าใจบทบาทของ ID ในระบบของคุณ