हिन्दी

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

नाम-आधारित UUID (v3 और v5): नामस्थान से नियतात्मक ID

· पेजभूमि

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

नेमस्पेस और नाम को संयोजित किया गया, SHA-1 के साथ हैश किया गया, और परिणामी बाइट्स को UUIDv5 के रूप में स्वरूपित किया गया
मूल ToolAcre वेक्टर चित्रण

जब एक ही बाहरी रिकॉर्ड को हमेशा एक ही पहचानकर्ता मिलना चाहिए, तो यादृच्छिक UUID काम नहीं करेंगे। संस्करण 3 और 5 UUIDs में एक नेमस्पेस और एक नाम को एक स्थिर ID में बदल दिया जाता है; यह पोस्ट बताती है कि उनका उपयोग कैसे और कब करना है।

एक ही ग्राहक को दो बार पुनः आयात करना - दोहराव की समस्या जिसे नियतात्मक ID हल करती है

एक डेटा आयात पाइपलाइन उस सिस्टम के भीतर स्थिर बाहरी ID के साथ बाहरी सिस्टम से ग्राहक रिकॉर्ड प्राप्त करती है। यदि आप प्रत्येक आयात रन के लिए एक नया यादृच्छिक UUID उत्पन्न करते हैं, तो एक ही ग्राहक को दो बार आयात करने से दो अलग-अलग पहचानकर्ता और डुप्लिकेट रिकॉर्ड उत्पन्न होते हैं। यह दोहराव रिपोर्टिंग, बिलिंग और समर्थन प्रणालियों में प्रवाहित होता है। यदि आप ग्राहक की बाहरी ID से UUID और आपके आयात स्रोत का प्रतिनिधित्व करने वाला एक स्थिर नामस्थान प्राप्त करते हैं, तो प्रत्येक आयात उसी ग्राहक के लिए समान UUID उत्पन्न करता है, जो आपको मौजूदा रिकॉर्ड को पहचानने और अद्यतन करने में सक्षम बनाता है। यह नियतिवाद v3 और v5 UUID की परिभाषित विशेषता है: वे स्वतंत्र रूप से उत्पन्न नहीं होते हैं बल्कि इनपुट से प्राप्त होते हैं, और एक ही इनपुट हमेशा समान UUID उत्पन्न करता है।

नेमस्पेस प्लस नाम - इनपुट को कैसे संयोजित और हैश किया जाता है, और क्यों नेमस्पेस विभिन्न स्रोतों के बीच टकराव को रोकता है

एक v3 या v5 UUID तीन घटकों से प्राप्त होता है: एक नेमस्पेस UUID (आम तौर पर पूर्वनिर्धारित), एक नाम (कोई भी बाइट स्ट्रिंग), और एक हैश एल्गोरिदम (MD5 v3 के लिए, SHA-1 v5 के लिए)। को संयोजित करें 16 bytes नामस्थान का UUID साथ UTF-8 नाम के बाइट्स, संयोजन को हैश करें, पहले लें 16 bytes हैश आउटपुट का, और उन बाइट्स की व्याख्या एक के रूप में करें UUID संस्करण निबल सेट के साथ 3 या 5. नेमस्पेस ID स्पेस को विभाजित करता है: v5 UUIDs से DNS नेमस्पेस कभी भी v5 UUIDs से नहीं टकराता URL नामस्थान. RFC 9562 चार पूर्वनिर्धारित नामस्थानों को परिभाषित करता है: द्वारा DNS नाम, द्वारा URL, द्वारा OID, और एक्स द्वारा।500 प्रतिष्ठित नाम. संगठन v4 उत्पन्न करके अपना स्वयं का नेमस्पेस बना सकते हैं UUID.

v3 में MD5 और v5 में SHA-1 - यहां कमजोर हैश स्वीकार्य क्यों है, क्योंकि ID एक सुरक्षा नियंत्रण नहीं है

संस्करण 3 उपयोग MD5 और संस्करण 5 उपयोग SHA-1, उनकी विशिष्टता तिथियों और उपलब्ध कार्यान्वयन के अनुसार विकल्प। नाम-आधारित UUID के लिए, यह अंतर अप्रासंगिक है क्योंकि हैश फ़ंक्शन कोई सुरक्षा सीमा या क्रिप्टोग्राफ़िक नियंत्रण नहीं है। UUID प्रामाणिकता या सत्यनिष्ठा साबित नहीं कर रहा है; यह बस एक वैरिएबल-लेंथ स्ट्रिंग को फिक्स्ड में परिवर्तित कर रहा है 128-बिट मान. हमला मॉडल अप्रासंगिक है क्योंकि UUID को अपारदर्शी मूल्यों के रूप में संग्रहीत और तुलना की जाती है, सबूत या सुरक्षा नियंत्रण के रूप में नहीं। नए कार्यान्वयन में v5 का उपयोग करना चाहिए (SHA-1) v3 के बजाय (MD5), अनिवार्य सुरक्षा कारणों से नहीं बल्कि इसलिए क्योंकि v5 आधुनिक मानक है और व्यापक रूप से उपलब्ध है।

पूर्वनिर्धारित नामस्थान - DNS, URL, OID और X.500, और कब अपना खुद का निर्माण करना है

RFC 9562 विशिष्ट बाइट प्रतिनिधित्व के साथ ठीक चार पूर्वनिर्धारित नेमस्पेस UUID निर्दिष्ट करता है: DNS के लिए 6ba7b810-9dad-11d1-80b4-00c04fd430c8, URL के लिए 6ba7b811-9dad-11d1-80b4-00c04fd430c8, OID के लिए 6ba7b812-9dad-11d1-80b4-00c04fd430c8, और 6ba7b814-9dad-11d1-80b4-00c04fd430c8 X.500 विशिष्ट नाम। DNS नामस्थान से प्राप्त एक v5 UUID और नाम www.example.com हमेशा समान रहेगा और URL नामस्थान से v5 UUID से कभी नहीं टकराएगा। पूर्वनिर्धारित नेमस्पेस का उपयोग करने से अंतरसंचालनीयता सुनिश्चित होती है: यदि कई टीमें स्वतंत्र रूप से DNS नेमस्पेस के साथ v5 का उपयोग करती हैं, तो वे समान DNS नामों के लिए समान UUID उत्पन्न करती हैं। नेमस्पेस चुनना या ढालना स्कीमा डिज़ाइन का हिस्सा है।

व्यावहारिक उदाहरण - URL नेमस्पेस से संकल्पनात्मक रूप से एक v5 UUID और एक रिकॉर्ड URL प्राप्त करना, चरण दर चरण

URL नेमस्पेस और नाम https://example.com/api/users/42. से संकल्पनात्मक रूप से एक v5 UUID प्राप्त करें। 16 bytes के रूप में नेमस्पेस UUID 6b a7 b8 11 9d विज्ञापन 11 d1 है। 80 b4 00 c0 4f d4 30 c8. नाम UTF-8 स्ट्रिंग https://example.com/api/users/42, है जो 30 bytes है। कुल 46 bytes प्राप्त करने के लिए नेमस्पेस बाइट्स (16) और नाम बाइट्स (30) को जोड़ें। SHA-1 हैश की गणना करें, 20-बाइट हैश का उत्पादन करें। पहले 16 bytes को लें और उन्हें UUID के रूप में समझें, संस्करण निबल को 5 पर सेट करें और वैरिएंट बिट्स को RFC मानक पर सेट करें। समान इनपुट के साथ इसकी दोबारा गणना करने से समान परिणाम प्राप्त होता है। अधिकांश डेवलपर v5 की गणना करने के लिए अपनी भाषा UUID लाइब्रेरी का उपयोग करते हैं।

पैटर्न कहां टूटता है - जब नाम बदलते हैं, जब टीमों के बीच नाम स्थान असंगत होता है, और जब इनपुट गुप्त होते हैं

नाम-आधारित UUID मानते हैं कि नाम सिस्टम और आयात रन में स्थिर और सुसंगत है। यदि एक ही बाहरी रिकॉर्ड के अलग-अलग सिस्टम में अलग-अलग नाम हैं, तो प्रत्येक नाम से v5 उत्पन्न करने से अलग-अलग UUID उत्पन्न होते हैं और एक ही व्यक्ति की पहचान करने में विफल रहता है। यदि टीमों के बीच एक नामस्थान पर सहमति नहीं है (प्रत्येक टीम वास्तव में एक ही स्रोत के लिए अपना स्वयं का नामस्थान बना रही है), तो वे अलग-अलग UUID उत्पन्न करते हैं और रिकॉर्ड से मिलान करने में विफल रहते हैं। यदि इनपुट संवेदनशील डेटा है, तो v5 UUID उत्पन्न करने का अर्थ है UUID एक सार्वजनिक, नियतात्मक मान है जिसे कोई भी देख सकता है यदि उन्हें इनपुट पता है। जब इनपुट बदलते हैं या नेमस्पेस परिभाषाएँ असंगत होती हैं तो नियतिवाद टूट जाता है।

इसमें क्या शामिल नहीं है - ToolAcre जेनरेटर CSPRNG से लिया गया है, इसलिए नाम-आधारित ID के लिए आपकी भाषा की UUID लाइब्रेरी की आवश्यकता होती है

ToolAcre केवल v4 UUID उत्पन्न करता है, जो स्वतंत्रता के लिए ब्राउज़र क्रिप्टोग्राफ़िक रूप से सुरक्षित जनरेटर से लिया गया है। नाम-आधारित UUID व्युत्पत्ति के लिए आपकी भाषा UUID लाइब्रेरी या एक कार्यान्वयन की आवश्यकता होती है जो SHA-1 की गणना करता है और परिणाम को सही ढंग से प्रारूपित करता है। यह पोस्ट अवधारणा और उपयोग के मामलों की व्याख्या करती है; मानक क्रिप्टोग्राफ़िक लाइब्रेरीज़ तक पहुंच के साथ किसी भी भाषा में v5 पीढ़ी को लागू करना सीधा है। V5 व्युत्पत्ति की यांत्रिकी सरल है; चुनौती इसे एक सिस्टम स्कीमा में एकीकृत करना है जहां नेमस्पेस स्थिर है, नाम सुसंगत है, और दृष्टिकोण आपकी टीम के लिए अच्छी तरह से प्रलेखित है। विकास टीमों को नेमस्पेस विकल्पों का दस्तावेजीकरण करना चाहिए।

टेकअवे: जब आपको इसकी आवश्यकता हो तो नियतात्मक, अन्यथा यादृच्छिक - स्थिर मैपिंग के लिए v5 का उपयोग करें और हर उस चीज़ के लिए ToolAcre जनरेटर का उपयोग करें जो अपरिहार्य होना चाहिए

बाहरी पहचानकर्ताओं और अपने आंतरिक रिकॉर्ड के बीच स्थिर मैपिंग के लिए v5 का उपयोग करें। नियतत्ववाद डुप्लिकेट आयात को रोकता है और सिस्टम में मिलान रिकॉर्ड को सीधा और विश्वसनीय बनाता है। उन पहचानकर्ताओं के लिए नाम-आधारित UUID का उपयोग न करें जिन्हें अनुमान लगाने योग्य होने की आवश्यकता है या उन परिदृश्यों के लिए जिनके लिए मजबूत गोपनीयता और रहस्य की आवश्यकता होती है। ToolAcre पहचानकर्ताओं के लिए यादृच्छिक v4 UUID उत्पन्न करता है जो पूर्वानुमान के बिना स्वतंत्र और विशिष्ट होना चाहिए। जब आपके सिस्टम को निश्चित पहचानकर्ताओं के लिए इनपुट मैप करने वाली नियतात्मक ID की आवश्यकता होती है, तो आपकी भाषा UUID लाइब्रेरी उनकी गणना कर सकती है। जब आप इनपुट को नियंत्रित करते हैं तो नियतिवाद एक शक्तिशाली विशेषता है..