हिन्दी

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

crypto.getRandomValues कैसे 16 रैंडम बाइट्स को v4 UUID में बदल देता है

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

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

संस्करण और भिन्न बिट फ़ील्ड के साथ सोलह यादृच्छिक बाइट्स हाइलाइट किए गए
मूल ToolAcre वेक्टर चित्रण

एक संस्करण 4 UUID छह बिट्स ओवरराइट के साथ क्रिप्टोग्राफ़िक रूप से सुरक्षित जनरेटर से 16 bytes है। यह पोस्ट Web Crypto कॉल से परिचित 36-वर्ण स्ट्रिंग तक बाइट्स चलाती है।

सर्वर द्वारा उत्तर देने से पहले आपको जिस ID की आवश्यकता होती है - क्लाइंट-साइड जेनरेशन ऑफ़लाइन-प्रथम फॉर्म, आशावादी UI और बैच आयात में क्यों आती है

किसी ऑफ़लाइन फ़ॉर्म को सर्वर के प्रतिक्रिया देने से पहले एक पहचानकर्ता की आवश्यकता हो सकती है, और एक आशावादी UI एक साथ कई ऑब्जेक्ट बना सकता है। UUIDv4 को केंद्रीय काउंटर के बिना स्वतंत्र रूप से उत्पन्न करने के लिए डिज़ाइन किया गया है। यह उपयोगकर्ता की पहचान का प्रमाण या कोई रहस्य नहीं है जिसे आप प्रमाणीकरण के स्थान पर सुरक्षित रूप से रख सकते हैं। यदि आपके डेटाबेस को निर्माण समय के अनुसार क्रमबद्ध मानों की आवश्यकता है, तो यादृच्छिक v4 ID का आदेश नहीं दिया जाता है; यह उनकी यादृच्छिकता को कमजोर करने के कारण के बजाय एक अलग स्कीमा निर्णय है।

crypto.getRandomValues वास्तव में क्या करता है - ऑपरेटिंग सिस्टम के एन्ट्रापी स्रोत से टाइप की गई सरणी भरना, JavaScript सूत्र से नहीं

crypto.getRandomValues ब्राउज़र प्लेटफ़ॉर्म के क्रिप्टोग्राफ़िक रूप से सुरक्षित यादृच्छिक जनरेटर से Uint8Array को 16 bytes से भरता है। यह Date.now() या Math.random() से मान प्राप्त नहीं करता है। ऑपरेटिंग सिस्टम और ब्राउज़र अंतर्निहित एन्ट्रापी स्रोत को कार्यान्वित करते हैं, इसलिए JavaScript कोड स्वयं यादृच्छिक-संख्या सूत्र को लागू करने के बजाय बाइट्स प्राप्त करता है। ToolAcre यदि इसका सुरक्षित स्रोत अनुपस्थित है तो पहचानकर्ता उत्पन्न करने से इंकार कर देता है।

बाइट 6 और बाइट 8 को ओवरराइट करना - कैसे संस्करण निबल 4 बन जाता है और वैरिएंट बिट्स 10xx हो जाते हैं, और केवल छह बिट्स क्यों खो जाते हैं

RFC 9562 एक संस्करण निबल और एक भिन्न फ़ील्ड का वर्णन करता है। सोलह यादृच्छिक बाइट्स से शुरू करके, बाइट 6 के उच्च चार बिट्स को बाइनरी 0100 (संस्करण 4) पर सेट करें, और बाइट 8 के शीर्ष दो बिट्स 10 (मानक संस्करण) पर सेट करें। कार्यान्वयन (बाइट6 और 0x0f) | का उपयोग करता है 0x40 और (बाइट8 और 0x3f) | 0x80. UUIDv4 योजना के अंतर्गत 122 यादृच्छिक बिट्स को छोड़कर, छह बिट्स को अधिलेखित कर दिया गया है। वे स्थिर बिट्स शेष बाइट्स को कम यादृच्छिक नहीं बनाते हैं।

बाइट्स से 8-4-4-4-12 - हेक्स एन्कोडिंग, लोअरकेस आउटपुट और हाइफ़न प्लेसमेंट जैसा कि मानक उन्हें परिभाषित करता है

आवश्यकता पड़ने पर प्रत्येक बाइट को अग्रणी शून्य के साथ बिल्कुल दो हेक्साडेसिमल वर्णों के रूप में एनकोड करें। 4, 6, 8 और 10 bytes के बाद डैश डालें, परिचित 8-4-4-4-12 उत्पन्न करें। हेक्साडेसिमल-वर्ण समूह। एक वैध v4 स्ट्रिंग के तीसरे समूह की शुरुआत में 4 और चौथे की शुरुआत में 8, 9, a या b में से एक होता है। फ़ॉर्मेटिंग से एन्ट्रॉपी नहीं जुड़ती; यह केवल अंतर्निहित 128-बिट मान को उन टूल के साथ इंटरऑपरेबल बनाता है जो UUID टेक्स्ट फॉर्म की अपेक्षा करते हैं।

कार्यान्वित उदाहरण - एक 16-बाइट बफ़र को उसके अंतिम UUID स्ट्रिंग में मास्किंग और फ़ॉर्मेटिंग के माध्यम से पता लगाया गया

उदाहरणात्मक बाइट्स ट्रेस करें 00 11 22 33 44 55 F6 77 38 99 AA BB CC डीडी ईई एफएफ। बाइट 6 पर F6 को मास्क करने से 46 उत्पन्न होता है; 38 को बाइट 8 पर मास्क करने से B8 उत्पन्न होता है। लोअरकेस हेक्साडेसिमल फ़ॉर्मेटिंग और डैश के बाद परिणाम 00112233-4455-4677-b899-aabbccddeeff है। यह जानबूझकर तय किया गया शिक्षण उदाहरण है, न कि उत्पादन में पुन: उपयोग के लिए एक पहचानकर्ता। प्रत्येक वास्तविक वस्तु के लिए एक नई वस्तु तैयार करें और संस्करण तथा विभिन्न स्थितियों की तुलना स्वयं करें।

crypto.randomUUID() एक-कॉल शॉर्टकट के रूप में - नई विधि आपके लिए क्या करती है और यह कहां अनुपलब्ध है

एक सुरक्षित मूल पर, crypto.randomUUID() एक कॉल में v4 जेनरेशन और फ़ॉर्मेटिंग करता है। ToolAcre जहां उपलब्ध हो वहां इसका उपयोग करता है और अन्यथा उपरोक्त स्पष्ट बिट संचालन के साथ getRandomValues ​​पर वापस आ जाता है। ब्राउज़र की उपलब्धता संदर्भ के अनुसार भिन्न होती है: रैंडमUUID सुरक्षित संदर्भों तक ही सीमित है, जबकि getRandomValues ​​अभी भी HTTP LAN पेज पर मौजूद हो सकता है। केवल एक बटन को स्पष्ट रूप से चालू रखने के लिए कोई भी शाखा Math.random पर वापस नहीं आती है।

इसमें क्या शामिल नहीं है - समय-आधारित (v1, v7) और नाम-आधारित (v3, v5) संस्करण, जिन्हें यादृच्छिक बाइट्स की तुलना में अलग इनपुट की आवश्यकता होती है

यह तंत्र समय-आधारित v1 या v7 पहचानकर्ताओं, नाम-आधारित v3/v5 पहचानकर्ताओं, या प्रयोगात्मक v8 लेआउट का वर्णन नहीं करता है। यादृच्छिक UUID में ध्वनि यादृच्छिकता के साथ टकराव की संभावना बहुत कम है, टकराव की पूर्ण गणितीय असंभवता नहीं है। गोपनीयता, जीवनकाल और प्राधिकरण पर स्वतंत्र रूप से विचार किए बिना v4 UUID को एक्सेस-कंट्रोल जांच या पासवर्ड-रीसेट टोकन के रूप में उपयोग नहीं किया जाना चाहिए।

टेकअवे: सुरक्षित यादृच्छिकता ही संपूर्ण कार्य है - ToolAcre UUID जनरेटर उसी ब्राउज़र CSPRNG से आता है, इसलिए आप जो कॉपी करते हैं वही आपका कोड उत्पन्न करेगा

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