हिन्दी

डेवलपर टूल · UUID जनरेटर

UUID को हाथ से पढ़ना: संस्करण और संस्करण बिट्स कहाँ रहते हैं

· यह काम किस प्रकार करता है

uuid क्रिप्टोग्राफी ब्राउज़र-एपिस

संस्करण निबल (स्थिति 14) और वैरिएंट फ़ील्ड (स्थिति 19) के साथ एक UUID स्ट्रिंग, जो दिखाती है कि कौन से हेक्स वर्ण ID प्रकार को प्रकट करते हैं
मूल ToolAcre वेक्टर चित्रण

प्रत्येक UUID में दो हेक्स वर्ण आपको बताते हैं कि इसे किस संस्करण में बनाया गया है और यह किस प्रकार के लेआउट का अनुसरण करता है। उन्हें एक नज़र में पढ़ना सीखें और जानें कि वे आपको क्या नहीं बता सकते।

यह ID किस सिस्टम ने बनाई? - लॉग-फोरेंसिक प्रश्न जिसका उत्तर निबल संस्करण दे सकता है

एक UUID स्ट्रिंग में 36 वर्ण होते हैं: बत्तीस हेक्साडेसिमल अंक और 8-4-4-4-12 स्थिति में चार हाइफ़न। प्रत्येक UUID में दो अक्षर - 14 और 19 स्थिति पर दिखाई देते हैं - मेटाडेटा को एन्कोड करते हैं: संस्करण फ़ील्ड आपको बताता है कि किस एल्गोरिदम ने ID उत्पन्न की है, और वेरिएंट फ़ील्ड आपको बताता है कि यह किस मानक लेआउट का अनुसरण करता है। टूल के बिना इन दो अक्षरों को पढ़ना लॉग फोरेंसिक कौशल है: आप डेटाबेस डंप या त्रुटि संदेश में UUID देखते हैं और तुरंत जान लेते हैं कि क्या यह एक v1 टाइमस्टैम्प है (जो निर्माण समय को लीक करता है), एक v4 यादृच्छिक मान (जो CSPRNG से उत्पन्न हुआ था), या कुछ और। संस्करण संख्या UUID के बिट्स 48–51 पर है, जो तीसरे समूह के पहले हेक्साडेसिमल वर्ण को मैप करता है।

पांच समूहों में 128-बिट लेआउट - कैसे 8-4-4-4-12 बाइट्स पर मैप करता है और समूह ऐतिहासिक क्यों हैं, कार्यात्मक नहीं

स्ट्रिंग xxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx के लिए, स्थिति 14 पर वर्ण संस्करण है। RFC 9562 संस्करण 1 से 8 तक परिभाषित करता है: v1 ग्रेगोरियन-समय-आधारित है और निर्माण समय को लीक करता है; v4 यादृच्छिक है; v7 Unix-समय-आधारित और क्रमबद्ध है। संस्करण 0, 9, और उच्चतर आरक्षित या अप्रयुक्त हैं। यदि आप v1 UUID देखते हैं, तो आप जानते हैं कि समय और हार्डवेयर पता मिश्रित थे; यदि आप v4 देखते हैं, तो ID संस्करण बिट्स सेट के साथ यादृच्छिक बाइट्स है; यदि आप v7 देखते हैं, तो यह निर्माण समय के अनुसार क्रमबद्ध होता है। संस्करण वैकल्पिक नहीं है; प्रत्येक सही ढंग से बने UUID में एक है। वैरिएंट फ़ील्ड UUID के बिट्स 64–65 पर है, जो ऑक्टेट 8 के दो सबसे महत्वपूर्ण बिट्स हैं।

संस्करण निबल - तीसरे समूह का पहला अक्षर, 1 से 8 तक क्या मतलब है, और वहां 0 या 9 क्या इंगित करता है

पाठ प्रतिनिधित्व xxxxxxx-xxxx-xxxx-Nxxx-xxxxxxxxxxxxx में, चौथे समूह का पहला अक्षर (स्थिति 19) वैरिएंट को एन्कोड करता है। RFC 9562 वैरिएंट (आधुनिक उपयोग में मानक) के लिए, यह वर्ण 8, 9, a, या b होना चाहिए—1000, 1001, 1010, और का हेक्साडेसिमल प्रतिनिधित्व 1011 बाइनरी में। कोई भी अन्य वर्ण (0–7, c–f) एक अलग प्रकार का संकेत देता है: 0–7 NCS पश्चगामी संगतता हैं; c–d छोटे-एंडियन बाइट क्रम के साथ Microsoft लीगेसी GUID हैं; ई-एफ आरक्षित हैं। जब आप स्थिति 19 पढ़ते हैं और 8, 9, a, या b देखते हैं, तो आप RFC 9562 UUID देख रहे होते हैं। किसी भी अन्य मूल्य का मतलब है कि बाइट्स एक अलग व्याख्या का पालन करते हैं। 128-बिट लेआउट ऑक्टेट्स 0–15 में विभाजित होता है, लेकिन टेक्स्ट प्रारूप उन्हें पठनीयता के लिए समूहों द्वारा अलग करता है, कार्य के लिए नहीं।

वैरिएंट फ़ील्ड - चौथे समूह का पहला वर्ण 8, 9, RFC UUIDs के लिए a या b क्यों है, और c/d (Microsoft विरासत) या 0–7 (NCS) सिग्नल क्या है

पांच समूह ऐतिहासिक फ़ील्ड सीमाओं का प्रतिनिधित्व करते हैं: पहले तीन फ़ील्ड में v1 UUIDs में टाइमस्टैम्प और संस्करण होते हैं, चौथे फ़ील्ड में घड़ी अनुक्रम और संस्करण होता है, पांचवें फ़ील्ड में नोड पहचानकर्ता होता है। संस्करण 4 और बाद के UUID संस्करण इन फ़ील्ड नामों का उपयोग नहीं करते हैं, लेकिन संस्करण और संस्करण अभी भी समान बिट स्थिति में हैं। v4 UUID को पढ़ने का मतलब यह स्वीकार करना है कि अधिकांश 128 bits यादृच्छिक पेलोड हैं, लेकिन उनमें से दो - पाठ में 14 और 19 स्थिति में - मानक द्वारा तय किए गए हैं। वे निश्चित बिट साबित करते हैं कि ID एक v4 और RFC-वेरिएंट है। शून्य UUID 00000000-0000-0000-0000-000000000000 है, सभी शून्य, और इसका कोई संस्करण नहीं है। अधिकतम UUID ffffffff-ffff-ffff-ffff-ffffffffffff, सभी f वर्ण हैं, और आरक्षित और अपरिवर्तित भी हैं।

कार्यान्वित उदाहरण - तीन नमूना पहचानकर्ताओं को वर्ण दर वर्ण डिकोड करना, जिसमें एक v4 और एक v7 शामिल है

प्रत्येक अन्य सुगठित UUID के तीसरे समूह में एक संस्करण और चौथे में एक संस्करण होता है। तीन नमूना ID के साथ स्वयं का परीक्षण करें: 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 इनपुट के रूप में समय और हार्डवेयर का उपयोग करता है, इसलिए विभिन्न मशीनों से समान v1 UUID का मतलब घड़ी की गड़बड़ी या सिंक्रनाइज़ेशन समस्याएं हैं। संस्करण v4 यादृच्छिक है, इसलिए एक डुप्लिकेट v4 UUID का अर्थ है या तो टूटी हुई यादृच्छिकता या एक खगोलीय रूप से असंभावित टक्कर (ध्वनि यादृच्छिकता के साथ प्रति 2 में लगभग एक। 7 ट्रिलियन UUID)।

निल और मैक्स - दो पूर्ण-शून्य और पूर्ण-एफ मान जिनका कोई संस्करण नहीं है

संस्करण 0 या 9 का अर्थ है कि स्ट्रिंग बिल्कुल भी मान्य UUID नहीं है। संस्करण और संस्करण को पढ़ना यह समझने में पहला कदम है कि ID क्या है; यह जाँचना कि क्या यह मौजूद है या अद्वितीय है, दूसरा और तीसरा चरण है, जो आपके डेटाबेस और व्यावसायिक तर्क द्वारा किया जाता है। बिट स्थिति को समझने से डेटा माइग्रेशन को डीबग करने में मदद मिलती है। लीगेसी सिस्टम से UUID आयात करते समय, कुछ टूल भिन्न फ़ील्ड निर्यात करते हैं जो RFC 9562 मानक से मेल नहीं खाते हैं। C या d का एक भिन्न फ़ील्ड छोटे-एंडियन बाइट क्रम में Microsoft GUID को इंगित करता है। ये GUID Microsoft सिस्टम के भीतर मान्य पहचानकर्ता हैं, लेकिन बाइट-ऑर्डर रूपांतरण के बिना RFC 9562 UUID के साथ इंटरऑपरेट नहीं करते हैं। पढ़ने की स्थिति 19 आपको तुरंत बताती है कि किस सिस्टम ने ID जेनरेट की है। यदि आप 8, 9, a, या b देखते हैं, तो आपके पास RFC मानक UUID है।

प्रारूप जांच आपको क्या नहीं बता सकती - कि ID आपके डेटाबेस में मौजूद है, कि यह सुरक्षित रूप से उत्पन्न हुई है, या यह अद्वितीय है

यदि आप c या d देखते हैं, तो आपके पास Microsoft GUID है। यदि आप कोई अन्य वर्ण देखते हैं, तो पहचानकर्ता विकृत है या अस्पष्ट प्रणाली से है। ToolAcre जनरेटर हमेशा 19 स्थिति के साथ RFC 9562 UUIDs 8, 9, a, या b में से एक के रूप में उत्पन्न करता है। तीन-बिट संस्करण फ़ील्ड सात संभावित मानों को एन्कोड करता है (1–7; संस्करण 0 और 8 के विशेष अर्थ हैं)। संस्करण 1 ग्रेगोरियन टाइमस्टैम्प है, संस्करण 3 MD5-आधारित नेमस्पेस है, संस्करण 4 यादृच्छिक है, संस्करण 5 SHA-1-आधारित नेमस्पेस है, संस्करण 6 है Unix-टाइमस्टैम्प-आधारित (प्रस्तावित), संस्करण 7 Unix-टाइमस्टैम्प-आधारित सॉर्ट करने योग्य है (RFC 9562 में मानकीकृत), संस्करण 8 कस्टम प्रारूपों के लिए आरक्षित है। स्थिति-14 वर्ण को पढ़ने से आपको तुरंत पता चल जाता है कि किस एल्गोरिदम का उपयोग किया गया था। यदि आप UUID टकराव या अप्रत्याशित प्रकारों को डीबग कर रहे हैं, तो संस्करण संख्या आपका पहला सुराग है। ToolAcre विशेष रूप से क्रिप्टो से v4 UUID उत्पन्न करता है।

टेकअवे: दो अक्षर, बहुत सारा संदर्भ - एक स्ट्रिंग पार्स की पुष्टि करने के लिए ToolAcre अच्छी तरह से गठित चेक का उपयोग करें, फिर संस्करण को स्वयं पढ़ें

getRandomValues; प्रत्येक UUID का उत्पादन 14 स्थिति पर 4 होता है। UUID संरचना को हाथ से पार्स करना उन जटिल प्रणालियों को डीबग करने के लिए एक उपयोगी कौशल है जहां टूल उपलब्ध नहीं हैं। किसी उत्पादन घटना में, आपको एक विशेष टूल चलाए बिना डेटाबेस डंप, त्रुटि लॉग या कैश से UUID पढ़ने की आवश्यकता हो सकती है। आप संस्करण की पहचान करने के लिए स्थिति 14 की तलाश करते हैं (क्या यह समय लीक करता है? क्या यह यादृच्छिक है? क्या यह क्रमबद्ध है?)। आप वैरिएंट की पहचान करने के लिए स्थिति 19 की तलाश करते हैं (क्या यह RFC मानक है? क्या यह Microsoft GUID है? क्या यह आरक्षित है?)। ये दो अक्षर, कुल 36 में से, मेटाडेटा रखते हैं। शेष 34 वर्ण पेलोड हैं: टाइमस्टैम्प या यादृच्छिक बाइट्स या अन्य एल्गोरिदम-विशिष्ट डेटा। यह जानने से कि पेलोड क्या दर्शाता है, आपको अपने सिस्टम में ID की भूमिका को समझने में मदद मिलती है।