मैंने रूबी के लिए यूयूआईडी जनरेटर / पार्सर लिखा था, इसलिए मैं इस विषय पर खुद को यथोचित रूप से अच्छी तरह से सूचित करना चाहता हूं। चार प्रमुख यूयूआईडी संस्करण हैं:
संस्करण 4 यूयूआईडी अनिवार्य रूप से सिर्फ 16 बाइट्स बेतरतीब ढंग से क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या जनरेटर से खींचे जाते हैं, यूयूआईडी संस्करण और संस्करण की पहचान करने के लिए कुछ बिट-ट्विडलिंग के साथ। ये टकराने की बहुत संभावना नहीं है, लेकिन यह तब हो सकता है जब एक PRNG का उपयोग किया जाता है या यदि आपके पास वास्तव में, वास्तव में, वास्तव में, वास्तव में, वास्तव में दुर्भाग्य है।
संस्करण 5 और संस्करण 3 यूयूआईडी क्रमशः यूएआईडी उत्पन्न करने के लिए पहले से ही अनूठे डेटा के एक टुकड़े के साथ एक नाम स्थान को संयोजित करने के लिए SHA1 और MD5 हैश फ़ंक्शन का उपयोग करते हैं। उदाहरण के लिए, यह आपको URL से UUID बनाने की अनुमति देगा। यहां टक्कर केवल तभी संभव है जब अंतर्निहित हैश फ़ंक्शन में एक टक्कर भी हो।
संस्करण 1 यूयूआईडी सबसे आम हैं। वे नेटवर्क कार्ड के मैक पते का उपयोग करते हैं (जो कि जब तक खराब न हो, अद्वितीय होना चाहिए), प्लस टाइमस्टैम्प, प्लस यूयूआईडी उत्पन्न करने के लिए सामान्य बिट-ट्विडलिंग। ऐसी मशीन के मामले में जिसमें मैक एड्रेस नहीं है, 6 नोड बाइट्स क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या जनरेटर के साथ उत्पन्न होते हैं। यदि दो UUIDs इतनी तेजी से अनुक्रम में उत्पन्न होते हैं कि टाइमस्टैम्प पिछले UUID से मेल खाता है, तो टाइमस्टैम्प 1 से बढ़ जाता है। जब तक कि निम्न में से एक नहीं होता है तब तक टकराव नहीं होना चाहिए: मैक एड्रेस खराब हो गया है; दो अलग-अलग यूयूआईडी जनरेटिंग एप्लिकेशन चलाने वाली एक मशीन ठीक उसी क्षण यूयूआईडी बनाती है; एक नेटवर्क कार्ड के बिना या मैक पते के उपयोगकर्ता स्तर तक पहुंच के बिना दो मशीनों को एक ही यादृच्छिक नोड अनुक्रम दिया जाता है, और ठीक उसी क्षण में यूयूआईडी उत्पन्न करते हैं;
वास्तविक रूप से, इनमें से कोई भी घटना एक आवेदन की आईडी स्थान के भीतर दुर्घटना से नहीं होती है। जब तक आप आईडी को स्वीकार नहीं कर रहे हैं, तब तक, एक इंटरनेट-वाइड स्केल, या एक अविश्वसनीय वातावरण के साथ जहां दुर्भावनापूर्ण व्यक्ति आईडी की टक्कर के मामले में कुछ बुरा करने में सक्षम हो सकते हैं, यह सिर्फ कुछ ऐसा नहीं है जिसके बारे में आपको चिंता करनी चाहिए। यह समझना महत्वपूर्ण है कि यदि आप एक ही संस्करण 4 यूयूआईडी उत्पन्न करते हैं जैसा कि मैं करता हूं, ज्यादातर मामलों में, यह कोई फर्क नहीं पड़ता। मैंने आईडी को आपसे पूरी तरह से अलग आईडी स्पेस में जेनरेट किया है। मेरे आवेदन को टकराव के बारे में कभी पता नहीं चलेगा इसलिए टक्कर कोई मायने नहीं रखती। स्पष्ट रूप से, दुर्भावनापूर्ण अभिनेताओं के बिना एक एकल अनुप्रयोग स्थान में, पृथ्वी पर सभी जीवन का विलुप्त होने से बहुत पहले ही आपको टक्कर मिल जाएगी, यहां तक कि एक संस्करण 4 यूयूआईडी पर, भले ही आप '
इसके अलावा, 2 ^ 64 * 16 256 एक्साबाइट है। जैसा कि, आपको एक अनुप्रयोग स्थान में ID टक्कर के 50% संभावना होने से पहले आपको आईडी के लायक 256 एक्सबायट स्टोर करने की आवश्यकता होगी।