UUID जनरेटर
UUID v4, v7 और v1 बैच में बनाएं, एक बार में 10,000 तक, या किसी मौजूदा आइडेंटिफायर को डिकोड करके उसका वर्जन, वेरिएंट और टाइमस्टैम्प देखें।
UUID कैसे बनाएं
- 1
UUID का वर्जन चुनें
पूरी तरह रैंडम वैल्यू के लिए v4 चुनें, बनने के क्रम में सॉर्ट होने वाले आइडेंटिफायर के लिए v7, या समय पर आधारित क्लासिक बनावट के लिए v1। NIL और MAX दो आरक्षित स्थिर वैल्यू देते हैं।
- 2
गिनती और फॉर्मेट तय करें
एक बार में 10,000 तक बनाएं। बड़े या छोटे अक्षर चुनें, हाइफन रहें या नहीं, यह तय करें, और हर वैल्यू को कोट, ब्रेसेस या urn:uuid: प्रीफिक्स में लपेटें, ताकि उसे सीधे कोड में पेस्ट किया जा सके।
- 3
सूची कॉपी करें या डाउनलोड करें
बनी हुई सभी वैल्यू एक क्लिक में क्लिपबोर्ड पर कॉपी करें, या पूरे बैच को सादी टेक्स्ट फाइल या CSV के रूप में डाउनलोड करें। v1 और v7 के बैच में टाइमस्टैम्प का कॉलम भी होता है।
डेटाबेस की कुंजियों के लिए v7 क्यों v4 की जगह ले रहा है
v4 UUID में 122 बिट पूरी तरह रैंडम होते हैं। इसलिए डेटाबेस इंडेक्स में डाला गया ऐसा बैच पूरी तरह अनजाने क्रम में पहुंचता है: लिखने का काम पूरे इंडेक्स में बिखर जाता है और बड़े पैमाने पर परफॉर्मेंस गिरती है। v7 UUID 48 बिट के मिलीसेकंड टाइमस्टैम्प से शुरू होता है, इसलिए बाद में बने आइडेंटिफायर हमेशा पहले बने आइडेंटिफायर के बाद सॉर्ट होते हैं। इससे ऑटो-इंक्रीमेंट वाले पूर्णांक जैसी लिखने की लोकैलिटी मिलती है, और UUID की टक्कर से सुरक्षा और विकेंद्रीकृत जनरेशन भी बने रहते हैं। यह टूल रैंडम हिस्से के ऊपरी बिट को काउंटर की तरह इस्तेमाल करता है, ताकि एक ही मिलीसेकंड के अंदर भी v7 बैच बढ़ते क्रम में रहें।
यहां v1 में कभी MAC एड्रेस क्यों नहीं होता
1993 की UUID v1 की मूल परिभाषा में आखिरी 48 बिट नेटवर्क कार्ड के MAC एड्रेस से बनते थे, इस सोच के साथ कि दो कंप्यूटरों का MAC एड्रेस एक नहीं होता। ब्राउजर में यह एड्रेस मिलता ही नहीं, और जहां मिलता भी है, वहां हर डेटाबेस पंक्ति में असली MAC एड्रेस डालना अपनी बनावट से ही डिवाइस ट्रैक करने वाला लीक है। यह जनरेटर उन 48 बिट को हमेशा रैंडम बाइट से भरता है और मल्टीकास्ट बिट सेट करता है, ठीक वैसे, जैसे RFC 9562 इजाजत देता है। इस तरह v1 का समय के क्रम वाला फायदा बना रहता है और कोई हार्डवेयर आइडेंटिफायर सामने नहीं आता।
हर आइडेंटिफायर आपके डिवाइस पर ही बनता है
बनाना, फॉर्मेट करना और डिकोड करना, सब इसी टैब में Web Crypto API से होता है। कुछ भी सर्वर को नहीं भेजा जाता, और ब्राउजर के स्टोरेज में कुछ भी नहीं लिखा जाता। एनालिटिक्स तक सिर्फ “बटन दबाया गया” जैसा सामान्य इवेंट पहुंचता है, जिसमें वर्जन और गिनती होती है, खुद आइडेंटिफायर कभी नहीं।
अक्सर पूछे जाने वाले सवाल
UUID v4 और v7 में क्या फर्क है?
v4 में 122 बिट पूरी तरह रैंडम होते हैं, कोई बनावट नहीं होती। v7 अपने पहले 48 बिट मिलीसेकंड टाइमस्टैम्प पर खर्च करता है, इसलिए v7 वैल्यू का बैच उसी क्रम में सॉर्ट होता है, जिसमें वह बना। यह डेटाबेस की प्राइमरी की के लिए काम का है, और टक्कर से बचने लायक रैंडमनेस भी बनी रहती है।
डेटाबेस की कुंजियों के लिए v4 की जगह v7 कब इस्तेमाल करें?
जब भी आइडेंटिफायर प्राइमरी की या इंडेक्स कॉलम बनता है, v7 इस्तेमाल करें: समय का क्रम नई पंक्तियों को इंडेक्स में पास-पास रखता है। v4 कुंजी के रैंडम बिखराव के मुकाबले ऐसी पंक्तियां डालना नापने लायक तेज है। v4 तब इस्तेमाल करें, जब वैल्यू कभी इंडेक्स में न जाए, जैसे एक बार का टोकन।
यहां v1 में MAC एड्रेस क्यों नहीं होता?
ब्राउजर डिवाइस का MAC एड्रेस नहीं पढ़ सकते। ब्राउजर के बाहर भी हर बने आइडेंटिफायर में इसे डालने से पता चल जाता कि उसे किस मशीन ने बनाया। यह टूल v1 UUID के उस हिस्से को रैंडम बाइट से भरता है, जिसकी RFC 9562 साफ इजाजत देता है।
UUID टकराने की संभावना कितनी है?
v4 में लगभग 85 साल तक हर सेकंड 100 करोड़ UUID बनाने पर एक टक्कर की संभावना करीब 50% होती है; व्यवहार में ऐसा होता नहीं। v7 और v1 रैंडमनेस के ऊपर टाइमस्टैम्प भी जोड़ते हैं, जिससे गलती से टक्कर की संभावना और भी कम हो जाती है।
क्या UUID को पासवर्ड या एक्सेस टोकन की तरह इस्तेमाल कर सकते हैं?
यह अच्छा विचार नहीं है। v4 UUID में अच्छी-खासी रैंडमनेस होती है, पर उसका फॉर्मेट पहले से पता होता है और टूल उसे सार्वजनिक दिखने वाली वैल्यू मानते हैं, गुप्त रखे जाने वाले टोकन की तरह नहीं। जो कुछ भी गुप्त रहना चाहिए, उसके लिए अलग “पासवर्ड जनरेटर” इस्तेमाल करें।
NIL और MAX UUID किस काम के हैं?
NIL (सारे शून्य) आरक्षित वैल्यू है, जिसका कई सिस्टम में मतलब है “कोई आइडेंटिफायर नहीं” या “सेट नहीं”। MAX (सारे एक) हाल में परिभाषित हुआ है और रेंज क्वेरी में “किसी भी असली UUID से बड़ा” वाले सेंटिनल की तरह इस्तेमाल होता है। दोनों में से कोई भी रैंडम नहीं बनता; ये तय स्थिर वैल्यू हैं।
रैंडमनेस कहां से आती है?
Web Crypto API के crypto.getRandomValues से, और v4 के लिए, जहां ब्राउजर सपोर्ट करता है, सीधे crypto.randomUUID से। इस टूल में Math.random कहीं भी इस्तेमाल नहीं होता।
क्या UUID डिकोड करने पर वह कहीं भेजा जाता है?
नहीं। डिकोडर वर्जन निबल, वेरिएंट बिट और v1 व v7 में अंदर लिखा टाइमस्टैम्प पूरी तरह आपके ब्राउजर में पढ़ता है। आपकी पेस्ट की गई वैल्यू कभी पेज से बाहर नहीं जाती।