CalcOpenly
हिन्दी

UUID जनरेटर और डिकोडर (v4, v7)

सीड से दोहराए जा सकने वाले UUID v4 और v7 बनाएँ, या UUID अथवा GUID जाँचकर उसका संस्करण, वेरिएंट और उसमें छिपा समय पढ़ें।

AI लेखन टूल से मसौदा तैयारअपडेट किया गया जाँचे गए उदाहरण: 8

बड़े या छोटे अक्षर, हाइफ़न या ब्रेस के साथ अथवा बिना, और urn:uuid: उपसर्ग स्वीकार हैं।
आज़माएँ
प्रकार
Unix Epoch समय पर आधारित
प्रकार: Unix Epoch समय पर आधारित
UUID
017f22e2-79b0-7cc3-98c4-dc0c0c07398f
संस्करण
7
वेरिएंट
RFC 9562
UUID में रखा समय
2022-02-22 19:22:22.000 UTC
Unix समय
1645557742000ms

017f22e2-79b0-7cc3-98c4-dc0c0c07398f, RFC 9562 वेरिएंट का संस्करण 7 (Unix Epoch समय पर आधारित) UUID है; इसमें 2022-02-22 19:22:22.000 UTC समय रखा है।

फ़ील्ड की संरचना

unix_ts_ms (48)
0
0
0
0
0
0
0
1
0
1
1
1
1
1
1
1
0
0
1
0
0
0
1
0
1
1
1
0
0
0
1
0
0
1
1
1
1
0
0
1
1
0
1
1
0
0
0
0
ver (4)
0
1
1
1
rand_a (12)
1
1
0
0
1
1
0
0
0
0
1
1
var (2)
1
0
rand_b (62)
0
1
1
0
0
0
1
1
0
0
0
1
0
0
1
1
0
1
1
1
0
0
0
0
0
0
1
1
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
1
1
1
0
0
1
1
1
0
0
1
1
0
0
0
1
1
1
1
गणना कैसे होती है S
  1. मानक रूप में लिखें

    8-4-4-4-12 समूहों में छोटे हेक्स अक्षर: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f।

  2. वेरिएंट

    octet 8=98=100110002⇒RFC 9562\text{octet 8} = \texttt{98} = \texttt{10011000}_2 \Rightarrow \text{RFC 9562}

    शुरुआती बिट 10 का अर्थ RFC 9562 संरचना है; 0, 110 और 111 पुराने या भविष्य के उपयोगों के लिए आरक्षित हैं।

  3. संस्करण

    high nibble of octet 6=7c⇒7 (Unix Epoch time-based)\text{high nibble of octet 6} = \texttt{7c} \Rightarrow 7\ (\text{Unix Epoch time-based})
  4. Unix टाइमस्टैम्प

    bits 0–47=017f22e279b016=1645557742000 ms⇒2022-02-22 19:22:22.000 UTC\text{bits 0–47} = \texttt{017f22e279b0}_{16} = 1645557742000\ \text{ms} \Rightarrow \text{2022-02-22 19:22:22.000 UTC}
  5. यादृच्छिक डेटा

    इस संरचना में यादृच्छिक डेटा के लिए 74 बिट हैं।

UUID जनरेटर और डिकोडर (v4, v7) के बारे में

UUID एक 128-बिट पहचानकर्ता है, जो 32 हेक्स अंकों को 8-4-4-4-12 समूहों में लिखता है। RFC 9562 हर मानक UUID में दो हिस्से तय करता है: 17वें हेक्स अंक की शुरुआत में वेरिएंट बिट 10, और 13वें अंक में 4-बिट संस्करण। डिकोडर दोनों पढ़कर उस संस्करण के हिस्से निकालता है: संस्करण 7 में 48-बिट Unix मिलीसेकंड समय; संस्करण 1 और 6 में 15 अक्टूबर 1582 से 100-नैनोसेकंड अंतराल की 60-बिट गिनती; संस्करण 4 में 122 यादृच्छिक बिट।

डिफ़ॉल्ट RFC 9562 का संस्करण 7 उदाहरण 017f22e2-79b0-7cc3-98c4-dc0c0c07398f है। उसके पहले 48 बिट में 1,645,557,742,000 ms हैं, यानी 22 फ़रवरी 2022 को 19:22:22 UTC। डेटाबेस कुंजियों के लिए v7 उपयोगी है, क्योंकि मान बनने के समय के क्रम में छँटते हैं।

यहाँ UUID, सीड वाले xoshiro256** जनरेटर से बनते हैं; एक ही सीड हमेशा वही सूची देता है। जिन पहचानकर्ताओं का अनुमान नहीं लगना चाहिए, उनके लिए crypto.randomUUID() जैसा क्रिप्टोग्राफिक स्रोत लें।

UUID का संस्करण और समय कैसे पढ़ें

UUID, 128 बिट का पहचानकर्ता है। उसका सामान्य पाठ रूप 32 हेक्स अंकों को 8-4-4-4-12 समूहों में लिखता है। 13वाँ अंक संस्करण बताता है और 17वें अंक में वेरिएंट होता है। डिफ़ॉल्ट 017f22e2-79b0-7cc3-98c4-dc0c0c07398f में 7 संस्करण 7 है; 9 मानक वेरिएंट बताता है।

पहले वेरिएंट जाँचें, फिर संस्करण पढ़ें। मानक RFC वेरिएंट में 17वाँ अंक 8, 9, a या b होता है। वहाँ c या d हो तो वह Microsoft के लिए आरक्षित संरचना है; 13वें अंक को RFC संस्करण समझना सही नहीं होगा।

संस्करण 7 से समय निकालें

डिफ़ॉल्ट उदाहरण के पहले 12 हेक्स अंक हाइफ़न हटाकर 017f22e279b0 हैं। दशमलव में ये 1,645,557,742,000 मिलीसेकंड हैं। यह गिनती 1970-01-01 00:00 UTC से है। 1,000 से भाग देने पर Unix सेकंड 1,645,557,742 मिलते हैं: 2022-02-22 19:22:22.000 UTC।

Unix टाइमस्टैम्प कन्वर्टर से अंतिम चरण जाँच सकते हैं। UUID में 48-बिट मिलीसेकंड हिस्सा वर्ष 10889 तक चलता है। उसमें दिया समय निर्माण का प्रमाण नहीं है; कोई भी मनचाहा समय लिखकर UUID बना सकता है।

अलग संस्करण क्या रखते हैं

RFC 9562 ने 2024 में RFC 4122 का स्थान लिया। मुख्य संरचनाएँ हैं:

  • संस्करण 1: 1582-10-15 से 100-नैनोसेकंड अंतराल की 60-बिट गिनती, क्लॉक सीक्वेंस और 48-बिट नोड। नोड परंपरागत रूप से MAC पता था।
  • संस्करण 3 और 5: नेमस्पेस और नाम का क्रमशः MD5 या SHA-1 हैश; वही नाम वही UUID देता है।
  • संस्करण 4: संस्करण और वेरिएंट के बाद 122 यादृच्छिक बिट; इसमें निर्माण समय नहीं रहता।
  • संस्करण 6: संस्करण 1 के समय को ऊपरी बिट पहले रखकर क्रमित करता है।
  • संस्करण 7: शुरुआत में Unix मिलीसेकंड और फिर इस टूल में 74 यादृच्छिक बिट।
  • संस्करण 8: कस्टम संरचना; संस्करण और वेरिएंट के अलावा हिस्सों का अर्थ अनुप्रयोग तय करता है।
  • Nil और Max: सभी 128 बिट क्रमशः 0 या 1; ये विशेष मान हैं।

संस्करण 1 और 6 की तुलना

RFC का v1 उदाहरण c232ab00-9414-11ec-b3c8-9f6bdeced846 और v6 उदाहरण 1ec9414c-232a-6b00-b3c8-9f6bdeced846 एक ही क्षण रखते हैं: 2022-02-22 19:22:22.0000000 UTC। दोनों का क्लॉक सीक्वेंस 13256 और नोड 9f:6b:de:ce:d8:46 है। सात दशमलव अंक 100-नैनोसेकंड विभेदन बनाए रखते हैं।

v1 समय के निचले 32 बिट पहले रखता है। इसलिए पाठ की छँटाई समय के सबसे तेज़ बदलते हिस्से से होती है। v6 में वही 60 बिट 1ec9414c232ab00 क्रम में हैं, जिससे समय के अनुसार छँटाई होती है।

उदाहरणसंस्करणभीतर रखा UTC समय
डिफ़ॉल्ट72022-02-22 19:22:22.000 UTC
RFC v112022-02-22 19:22:22.0000000 UTC
RFC v44—
RFC v662022-02-22 19:22:22.0000000 UTC
सीड वाला v772026-01-15 12:00:00.000 UTC

v4 उदाहरण 919108f7-52d1-4320-9bac-f847db4148a8 में समय नहीं है। अंतिम पंक्ति सीड 42 और 2026-01-15 12:00 UTC से बनी सूची का पहला UUID 019bc186-de00-7716-a104-d9866d113a7e है।

v4 और v7 कब उपयोगी हैं

निर्माण समय उजागर न करना हो तो क्रिप्टोग्राफिक यादृच्छिक स्रोत वाला v4 उपयोगी है। v7 में नए रिकॉर्ड आम तौर पर डेटाबेस इंडेक्स के नए हिस्से में जुड़ते हैं; बदले में समय पढ़ा जा सकता है। एक ही मिलीसेकंड में इस टूल के v7 मान यादृच्छिक क्रम में हैं। सख्त बढ़ता क्रम चाहिए तो RFC 9562 §6.2 के काउंटर और समवर्ती निर्माण नियम देखें।

यहाँ जनरेशन xoshiro256** और SplitMix64 से होता है। वही सीड और सेटिंग वही सूची देते हैं, जो टेस्ट फ़िक्स्चर और दस्तावेज़ के लिए उपयोगी है। ये मान अनुमान योग्य हैं; इन्हें सत्र ID, टोकन या ऐसी उत्पादन कुंजी के लिए न लें जहाँ अनुमान न लगना आवश्यक हो। उसके लिए crypto.randomUUID() जैसा क्रिप्टोग्राफिक स्रोत लें। UUID अपने आप अनुमति जाँच का विकल्प भी नहीं है।

डिकोडर बड़े-छोटे अक्षर, हाइफ़न के साथ या बिना, ब्रेस और urn:uuid: उपसर्ग स्वीकार करता है। सीड 0 से 18,446,744,073,709,551,615 और सूची में 1 से 50 मान स्वीकार हैं। Windows के बाइनरी GUID में पहले तीन समूह लिटल-एंडियन होते हैं; कच्चे बाइट को पाठ से मिलाते समय क्रम जाँचें। हेक्स हिस्से को दशमलव में बदलने के लिए संख्या आधार कन्वर्टर लें।

हल किए गए उदाहरण

RFC 9562 संस्करण 7 उदाहरण

मुझे क्या करना है
UUID डिकोड करें
UUID
017F22E2-79B0-7CC3-98C4-DC0C0C07398F
UUID
017f22e2-79b0-7cc3-98c4-dc0c0c07398f
संस्करण
7
वेरिएंट
RFC 9562
UUID में रखा समय
2022-02-22 19:22:22.000 UTC
Unix समय
1645557742000 ms

जाँच का स्रोत: उदाहरण जाँच: RFC 9562 परिशिष्ट A.6 (मंगलवार, 22 फ़रवरी 2022, 2:22:22.00 PM GMT-05:00)

RFC 9562 संस्करण 4 उदाहरण

मुझे क्या करना है
UUID डिकोड करें
UUID
919108f7-52d1-4320-9bac-f847db4148a8
संस्करण
4
प्रकार
यादृच्छिक
वेरिएंट
RFC 9562

जाँच का स्रोत: उदाहरण जाँच: RFC 9562 परिशिष्ट A.3

RFC 9562 संस्करण 1 उदाहरण

मुझे क्या करना है
UUID डिकोड करें
UUID
C232AB00-9414-11EC-B3C8-9F6BDECED846
संस्करण
1
UUID में रखा समय
2022-02-22 19:22:22.0000000 UTC
क्लॉक सीक्वेंस
13,256
नोड
9f:6b:de:ce:d8:46

जाँच का स्रोत: उदाहरण जाँच: RFC 9562 परिशिष्ट A.1;.clock_seq = 13256;.node = 0x9f6bdeced846

RFC 9562 संस्करण 6 उदाहरण

मुझे क्या करना है
UUID डिकोड करें
UUID
1EC9414C-232A-6B00-B3C8-9F6BDECED846
संस्करण
6
UUID में रखा समय
2022-02-22 19:22:22.0000000 UTC

जाँच का स्रोत: उदाहरण जाँच: RFC 9562 परिशिष्ट A.5; v1 उदाहरण वाला वही क्षण

सवाल

UUID v4 और v7 में क्या अंतर है?

संस्करण 4 के 128 में से 122 बिट यादृच्छिक होते हैं; मान समान रूप से बिखरते हैं और समय नहीं बताते। RFC 9562 (मई 2024) का संस्करण 7 पहले 48-बिट Unix मिलीसेकंड समय और फिर 74 यादृच्छिक बिट रखता है, इसलिए नए ID निर्माण समय के क्रम में छँटते हैं। RFC 9562 v4 की कमजोर डेटाबेस-इंडेक्स लोकैलिटी बताता है। v7 प्राथमिक कुंजियों के लिए उपयोगी है, लेकिन ID बनाने का समय उजागर करता है।

क्या दो यादृच्छिक UUID एक जैसे हो सकते हैं?

अच्छे यादृच्छिक स्रोत के साथ संभावना बहुत छोटी है। v4 में 122 यादृच्छिक बिट होते हैं। बर्थडे सीमा के अनुसार एक डुप्लिकेट की 50% संभावना के लिए लगभग 2.7 × 10^18 UUID और एक अरब में एक की संभावना के लिए लगभग 103 लाख करोड़ UUID चाहिए। खराब जनरेटर या दोबारा लिया गया सीड डुप्लिकेट बना सकता है। इसलिए अलग प्रणालियों में विशिष्टता चाहिए तो यहाँ के सीड वाले UUID न लें।

UUID और GUID में क्या अंतर है?

दोनों वही 128-बिट प्रारूप हैं; Microsoft इसे GUID कहता है। उसके टूल अक्सर बड़े अक्षरों और ब्रेस में GUID दिखाते हैं, जैसे {017F22E2-79B0-7CC3-98C4-DC0C0C07398F}। RFC 9562 बड़े, छोटे या मिले हुए अक्षर स्वीकार करता है। अंतर बाइनरी बाइट क्रम में है: Windows पहले तीन समूह लिटल-एंडियन रखता है, जो कच्चे बाइट पढ़ते समय मायने रखता है।

UUID v7 से समय कैसे निकालें?

पहले 12 हेक्स अंक लें। ये 1970-01-01 00:00 UTC से मिलीसेकंड की 48-बिट गिनती रखते हैं। उन्हें दशमलव में बदलें। 017f22e2-79b0-7cc3-98c4-dc0c0c07398f में 017f22e279b0 = 1,645,557,742,000 ms, यानी 2022-02-22 19:22:22.000 UTC। 48-बिट हिस्सा वर्ष 10889 तक चलता है।

क्या संस्करण 1 UUID से निजता का जोखिम है?

हो सकता है। संस्करण 1 में 60-बिट समय और 48-बिट नोड होता है, जो परंपरागत रूप से नेटवर्क कार्ड का MAC पता था। इससे निर्माण का समय और कार्ड पता चल सकता है। RFC 9562 का v1 उदाहरण 2022-02-22 19:22:22 UTC और नोड 9f:6b:de:ce:d8:46 देता है। RFC यादृच्छिक नोड की अनुमति देता है और संभव हो तो 1 या 6 के बजाय संस्करण 7 लेने को कहता है।

इस कैलकुलेटर के बारे में

v7: tms=bits 0–47v1/v6: t=60-bit count107−12 219 292 800 s\begin{aligned} \text{v7: } t_{ms} &= \text{bits } 0\text{–}47 \\ \text{v1/v6: } t &= \frac{\text{60-bit count}}{10^7} \\ &\quad - 12\,219\,292\,800\ \text{s} \end{aligned}

स्रोत

  1. RFC 9562 — Universally Unique IDentifiers (UUIDs), §4–5 and Appendix A test vectors
  2. Blackman & Vigna: xoshiro256** and SplitMix64 reference code

संदर्भों से जाँच की गई

इस कैलकुलेटर में स्वतंत्र स्रोतों के उत्तरों वाले 8 हल किए गए उदाहरण शामिल हैं। ये परीक्षण समूह में चलते हैं और आप इन्हें यहाँ भी चला सकते हैं।

यह कैलकुलेटर अपनी वेबसाइट पर लगाएँ

जहाँ कैलकुलेटर दिखाना है, वहाँ इसे पेस्ट करें। इसका उपयोग मुफ़्त है, यहाँ किए गए सुधार इसमें अपने आप पहुँच जाते हैं, और उसके नीचे की श्रेय पंक्ति मूल पेज का लिंक देती है, जिससे आपके पाठक पूरा संस्करण देख सकते हैं।

ऊँचाई
एम्बेड का पूर्वावलोकन देखें

श्रेय पंक्ति बनी रहने दें। यही एकमात्र शर्त है, और इसी से ये कैलकुलेटर मुफ़्त रहते हैं।