UUID जनरेटर
डेवcrypto.randomUUID द्वारा क्रिप्टोग्राफ़िक रूप से यादृच्छिक UUID (RFC 4122 v4) उत्पन्न करें।
इस पृष्ठ पर
UUID क्या है?#
एक UUID (Universally Unique Identifier, Microsoft सिस्टम पर GUID भी कहा जाता है) एक 128-बिट पहचानकर्ता है जिसे 32 हेक्स अंकों के रूप में 8-4-4-4-12 समूहों में प्रस्तुत किया जाता है, उदाहरण के लिए c9bf1d4d-7d4f-4b3a-8b2c-1e5f6a7b8c9d। विचार सरल किंतु शक्तिशाली है: माँग पर पहचानकर्ता उत्पन्न करें, बिना किसी केंद्रीय प्राधिकरण और बिना मशीनों के बीच समन्वय के, और फिर भी दो के टकराने की संभावना प्रभावी रूप से शून्य रहे। यही गुण UUIDs को वितरित डेटाबेस के लिए डिफ़ॉल्ट प्राथमिक-कुंजी रणनीति, लगभग हर JSON API संसाधन पर id फ़ील्ड, वह correlation ID जो लॉग पंक्तियों को माइक्रोसर्विसों के पार जोड़ते हैं, और अपलोड की गई blobs के फ़ाइलनाम बनाता है।
यह पेज RFC 4122 संस्करण 4 UUIDs उत्पन्न करता है — यादृच्छिक बिट्स से बना विविधता। संस्करण 4 वही है जो आप लगभग हर आधुनिक मामले में चाहते हैं: यह कोई मशीन MAC पता नहीं लेकर जाता (v1 के विपरीत), कोई namespace पदानुक्रम अंतःस्थापित नहीं करता (v3/v5 के विपरीत), और अद्वितीयता के लिए पूरी तरह क्रिप्टोग्राफ़िक यादृच्छिकता पर निर्भर करता है। आप एक UUID या एक बार में 10,000 तक का बैच उत्पन्न कर सकते हैं, लोअरकेस या अपरकेस में, पूरी तरह आपके ब्राउज़र में।
32 हेक्स अंकों में से दो वास्तव में यादृच्छिक नहीं हैं — वे UUID के अपने प्रकार की घोषणा करते हैं। स्थिति 14 पर version nibble (तीसरे समूह का पहला अक्षर) हमेशा 4 होता है, और स्थिति 19 पर variant nibble (चौथे समूह का पहला अक्षर) हमेशा 8, 9, a, या b होता है। इसीलिए आप इस पेज पर जो भी मान देखते हैं वह xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx पढ़ता है। ये दो नियत स्थितियाँ एक स्व-वर्णनात्मक फ़िंगरप्रिंट के रूप में दोगुना काम करती हैं: इस आकार से मेल खाने वाली कोई भी स्ट्रिंग एक v4 UUID है, और एक त्वरित regex लाखों को मान्य कर सकता है।
इसका उपयोग कैसे करें#
- शीर्ष पर संख्या नंबर फ़ील्ड को वहाँ तक सेट करें जितने UUIDs आप चाहते हैं — 1 से 10,000 तक कहीं भी। फ़ील्ड उस श्रेणी में क्लैंप होता है।
- यदि आपको सभी-अपरकेस आउटपुट चाहिए तो बड़े अक्षर चुनें (कुछ लिगेसी सिस्टम और Microsoft GUID परिपाटियाँ
C9BF1D4D-…पसंद करती हैं)। अधिकांश आधुनिक स्टैक जो लोअरकेस डिफ़ॉल्ट उपयोग करते हैं उसके लिए इसे अचुनें छोड़ें। - उत्पन्न क्लिक करें। मान मोनोस्पेस आउटपुट क्षेत्र में दिखते हैं, प्रति पंक्ति एक।
- पूरे बैच को अपने क्लिपबोर्ड पर कॉपी करने के लिए कॉपी क्लिक करें, एक SQL
INSERT, CSV, परीक्षण फ़िक्स्चर, या seed स्क्रिप्ट में चिपकाने के लिए तैयार। - जब भी आपको एक ताज़ा बैच चाहिए उत्पन्न पुनः क्लिक करें — हर क्लिक नए यादृच्छिक बिट्स खींचता है और ऐसे मान उत्पन्न करता है जो पहले कभी अस्तित्व में नहीं थे।
मुख्य विशेषताएँ#
- वास्तविक क्रिप्टोग्राफ़िक यादृच्छिकता। सुरक्षित संदर्भों में ब्राउज़र के
crypto.randomUUID()का उपयोग करता है, एकcrypto.getRandomValuesफ़ॉलबैक के साथ जो version और variant बिट्स पर अस्वीकृति नमूनाकरण लागू करता है —Math.random()नहीं, जो पहचानकर्ताओं के लिए उपयुक्त नहीं है। - बैच उत्पादन। एक क्लिक में 10,000 तक UUIDs, प्रति पंक्ति एक, ताकि आप स्वयं स्क्रिप्ट किए बिना डेटाबेस या फ़िक्स्चर फ़ाइल seed कर सकें।
- लोअरकेस या अपरकेस। एक टॉगल दोनों परिपाटियों को कवर करता है।
- RFC 4122 v4 के अनुरूप। version nibble हमेशा
4और variant nibble हमेशा8/9/a/bहोता है, इसलिए हर मान मानक v4 regex के विरुद्ध मान्य होता है। - 100% क्लाइंट-साइड। कोई बैकएंड नहीं, कोई टेलीमेट्री नहीं। आप यहाँ जो UUIDs उत्पन्न करते हैं वे कहीं अभिलेखित नहीं होते — वे दिखते ही आपके हैं।
विस्तृत उदाहरण#
संख्या को उसके डिफ़ॉल्ट 5 पर छोड़कर और बड़े अक्षर अचुनें, उत्पन्न क्लिक करें, और आपको इस तरह की पाँच पंक्तियाँ मिलती हैं (आपके वास्तविक मान भिन्न होंगे — वे यादृच्छिक हैं):
7f3a9c2e-1b4d-4e8f-a6c3-9d2b8e1f0a47
2c8d4f1a-9e3b-47a2-8c6d-1f5e9a0b3c28
a1b2c3d4-e5f6-4789-abcd-ef0123456789
9e8d7c6b-5a4f-3210-ba98-76543210fedc
4f3e2d1c-0b9a-8765-4321-fedcba987654
किसी भी पंक्ति के तीसरे समूह को ध्यान से देखें: यह हमेशा 4 से शुरू होता है। चौथे समूह को देखें: यह हमेशा 8, 9, a, या b से शुरू होता है। ये दो अक्षर यादृच्छिक नहीं हैं — ये version और variant मार्कर हैं, और यही कारण है कि एक-पंक्ति सत्यापनकर्ता पुष्टि कर सकता है कि कोई स्ट्रिंग वास्तविक v4 UUID है।
यदि आप बड़े अक्षर चुनते हैं और पुनः उत्पन्न करते हैं, तो वही आकार बड़े अक्षरों में आता है, उदा. 7F3A9C2E-1B4D-4E8F-A6C3-9D2B8E1F0A47 — समान बिट्स, बस उन सिस्टमों के लिए प्रस्तुत किए गए जो अपरकेस GUID अपेक्षा करते हैं।
अक्सर पूछे जाने वाले प्रश्न#
एक v4 UUID वास्तव में कितना अद्वितीय है? क्या मुझे कभी डुप्लिकेट मिलेगा?#
संख्याएँ जल्दी बेतुकी हो जाती हैं। एकल v4 UUID में 122 बिट वास्तविक यादृच्छिकता है (128 में से 4 version बिट्स और 2 variant बिट्स घटाकर)। एक टक्कर की 50% संभावना के लिए भी आपको लगभग 2.71 × 10^36 UUIDs उत्पन्न करने होंगे — यह ब्रह्मांड की आयु से अधिक समय तक प्रति सेकंड एक अरब अरब अरब। किसी भी यथार्थपरक डेटाबेस या सिस्टम के लिए, आप टक्करों को असंभव मान सकते हैं, और आपको उनकी जाँच करने की आवश्यकता नहीं।
क्या इन UUIDs को डेटाबेस प्राथमिक कुंजी के रूप में उपयोग करना सुरक्षित है?#
हाँ — संस्करण 4 इसके लिए सबसे सामान्य विकल्प है ठीक इसलिए क्योंकि इसे किसी समन्वय की आवश्यकता नहीं। एकमात्र चेतावनी index fragmentation है: सरल यादृच्छिक कुंजियाँ B-tree में फैल जाती हैं, इसलिए बहुत उच्च-लेखन PostgreSQL या MySQL तालिका पर आप UUIDv7 (समय-क्रमित) विविधता पसंद कर सकते हैं। अनुप्रयोग-स्तरीय संसाधन ID, correlation ID, और अधिकांश तालिकाओं के लिए, सादा v4 ठीक है।
UUID बनाने के लिए बस Math.random() क्यों नहीं उपयोग करूँ?#
क्योंकि Math.random() क्रिप्टोग्राफ़िक रूप से ठोस नहीं है — इसका आउटपुट काफ़ी पूर्वानुमेय हो सकता है कि एक हमलावर जो कुछ ID देखता है उनसे अन्य अनुमान लगा सके। यह टूल जानबूझकर crypto.randomUUID() (और उचित version/variant प्रबंधन के साथ एक crypto.getRandomValues फ़ॉलबैक) उपयोग करता है, जो ऑपरेटिंग सिस्टम के CSPRNG से खींचता है। किसी भी चीज़ के लिए जो उपयोगकर्ता, सत्र, या संसाधन की पहचान करती है, वह भेद मायने रखता है।
क्या मैं यहाँ संस्करण 1, संस्करण 5, या नामित UUIDs उत्पन्न कर सकता हूँ?#
नहीं — यह पेज जानबूझकर केवल v4 है, क्योंकि v4 वास्तविक उपयोग के मामलों के बहुसंख्यक को कवर करता है और एक यादृच्छिक स्रोत से परे किसी इनपुट की आवश्यकता नहीं। यदि आपको नाम-आधारित v5 UUID (एक नाम और एक namespace से निर्धारक) चाहिए, तो वह एक भिन्न गणना है और आपके अनुप्रयोग कोड या किसी समर्पित टूल में है।