UUID Decoder
UUID संरचना, संस्करण और एम्बेडेड डेटा को डीकोड और निरीक्षण करें
UUID इनपुट
निरीक्षण के लिए ऊपर UUID पेस्ट करें
UUID संरचना
UUID (Universally Unique Identifier) एक 128-bit मान है जिसे हाइफ़न द्वारा पाँच समूहों में विभाजित 32 hexadecimal अंकों के रूप में दर्शाया जाता है:
version और variant ही दो ऐसे फ़ील्ड हैं जो हर UUID में निश्चित रूप से मौजूद होते हैं। बाकी सभी फ़ील्ड वर्शन पर निर्भर करते हैं।
वर्शन फ़ील्ड
Version nibble तीसरे समूह का पहला hex अंक होता है (पूरी string में position 14)। यह बताता है कि पहचानकर्ता बनाने के लिए कौन सा UUID वर्शन उपयोग किया गया।
const hex = uuid.replace(/-/g, '') const version = parseInt(hex[12], 16) // single hex digit → 1, 2, 3, 4, 5, 6, 7, or 8
वर्शन 7 (UUID v7) सबसे नया व्यापक रूप से प्रयुक्त वर्शन है, जिसे RFC 9562 (2024) में शामिल किया गया। यह high bits में क्रमबद्धता के लिए Unix millisecond timestamp अंकित करता है।
वेरिएंट फ़ील्ड
Variant चौथे समूह के पहले byte के high bits में समाहित होता है। यह UUID के विन्यास और byte क्रम के नियमों को दर्शाता है।
| High bits | पहले hex अंक की श्रेणी | Variant | विवरण |
|---|---|---|---|
| 0xxx xxxx | 0x00–0x7F | NCS पश्चगामी संगतता | पुराने Network Computing System (NCS) UUIDs। पश्चगामी संगतता के लिए आरक्षित। |
| 10xx xxxx | 0x80–0xBF | RFC 4122 / RFC 9562 | मानक RFC 4122 / RFC 9562 UUID वेरिएंट। सभी आधुनिक UUID वर्शन (v1–v8) द्वारा उपयोग किया जाता है। |
| 110x xxxx | 0xC0–0xDF | Microsoft पश्चगामी संगतता | अलग byte क्रम के साथ पुराने Microsoft COM/DCOM GUIDs। Windows COM components में अभी भी मिलते हैं। |
| 111x xxxx | 0xE0–0xFF | आरक्षित | भविष्य में परिभाषा के लिए आरक्षित। किसी भी वर्तमान UUID वर्शन द्वारा उपयोग नहीं होता। |
व्यवहार में, आप जो लगभग सभी UUID देखते हैं वे RFC 4122 / RFC 9562 वेरिएंट (10xx xxxx बिट पैटर्न, चौथे समूह का पहला बाइट 0x80–0xBF श्रेणी में) का उपयोग करते हैं। NCS, Microsoft COM और Reserved वेरिएंट पुराने प्रारूप हैं जो आधुनिक प्रणालियों में बहुत कम देखे जाते हैं।
UUID वर्शन संदर्भ
RFC 4122 ने वर्शन 1–5 परिभाषित किए। RFC 9562 (2024) ने वर्शन 6, 7 और 8 जोड़े:
| वर्शन | नाम | मानक | विवरण |
|---|---|---|---|
| v1 | समय-आधारित | RFC 4122 | Timestamp (Gregorian epoch, 100ns सटीकता) + MAC address। प्रति host क्रमिक होता है लेकिन host की पहचान उजागर करता है। |
| v2 | DCE Security | RFC 4122 | UUID v1 पर आधारित, जिसमें time_low field को POSIX UID/GID से प्रतिस्थापित किया गया है। पुराने DCE/RPC systems के बाहर शायद ही उपयोग होता है। |
| v3 | नाम-आधारित MD5 | RFC 4122 | निर्धारक: namespace UUID + name string का MD5 hash। समान inputs हमेशा समान UUID देते हैं। v3 की जगह v5 उपयोग करें। |
| v4 | यादृच्छिक | RFC 4122 | 122 bits की cryptographically secure यादृच्छिकता। सबसे सामान्य सामान्य-प्रयोजन UUID वर्शन। |
| v5 | नाम-आधारित SHA-1 | RFC 4122 | v3 की तरह लेकिन SHA-1 उपयोग करता है। MD5 से अधिक टकराव-प्रतिरोधी। नए name-based UUIDs के लिए v3 की जगह यही उपयोग करें। |
| v6 | पुनर्क्रमित समय | RFC 9562 | UUID v1 timestamp fields को पुनर्क्रमित करता है ताकि UUID कालक्रमानुसार क्रमबद्ध हो। RFC 9562 में परिभाषित। |
| v7 | Unix समय | RFC 9562 | High bits में 48-bit Unix millisecond timestamp + यादृच्छिक डेटा। क्रमबद्ध और B-tree index-अनुकूल। नए time-ordered IDs के लिए अनुशंसित। |
| v8 | कस्टम | RFC 9562 | स्वतंत्र-प्रारूप: version और variant को छोड़कर सभी bits अनुप्रयोग-परिभाषित हैं। कोई उत्पादन एल्गोरिदम निर्धारित नहीं किया गया। |
UUID v1 Timestamps को डीकोड करना
UUID v1 एक 60-bit Gregorian timestamp (October 15, 1582 से 100-nanosecond अंतराल) तीन फ़ील्ड में विभाजित करके समाहित करता है: time_low (bits 0–31), time_mid (bits 32–47), और time_hi (bits 48–59)। यह उपकरण उन्हें जोड़कर UTC दिनांक में बदलता है।
// UUID v1: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 // ^^^^^^^^ ^^^^ ^^^^ ^^^^^ ^^^^^^^^^^^^ // time-low mid hi clk node (MAC) // ^ // version nibble (1) const hex = '6ba7b8109dad11d180b400c04fd430c8' const tLow = parseInt(hex.slice(0, 8), 16) // 0x6ba7b810 const tMid = parseInt(hex.slice(8, 12), 16) // 0x9dad const tHi = parseInt(hex.slice(13, 16), 16) // 0x1d1 (skip version nibble at index 12) // Reconstruct 60-bit timestamp (100-ns intervals since Oct 15, 1582) const t = (BigInt(tHi) << 48n) | (BigInt(tMid) << 32n) | BigInt(tLow) // Subtract Gregorian offset (Oct 15, 1582 → Jan 1, 1970 in 100-ns units) const GREGORIAN_OFFSET = 122192928000000000n const unixMs = (t - GREGORIAN_OFFSET) / 10000n console.log(new Date(Number(unixMs)).toISOString()) // → 1998-02-04T22:13:53.578Z
UUID v1 को संवेदनशील माना जाना चाहिए: अंतर्निहित MAC address और सटीक timestamp दोनों मिलकर उत्पन्न करने वाली मशीन और उत्पादन समय की पहचान कर सकते हैं।
UUID v7 Timestamps को डीकोड करना
UUID v7 पहले 48 bits (पहले समूह + दूसरे समूह के पहले 4 अंक) में 48-bit Unix millisecond timestamp समाहित करता है। यह उपकरण उन bits को पढ़कर millisecond सटीकता के साथ UTC दिनांक में बदलता है।
// UUID v7: 018e4bc8-1000-7000-8000-000000000001 // ^^^^^^^^^^^^ // 48-bit Unix ms timestamp const hex = '018e4bc8100070008000000000000001' // First 48 bits (12 hex chars) = Unix timestamp in milliseconds const ms = parseInt(hex.slice(0, 12), 16) // 0x018e4bc81000 console.log(new Date(ms).toISOString()) // → 2024-03-11T…Z // Everything after byte 6 is random (except version/variant bits)
UUID v1 के विपरीत, UUID v7 timestamp परिचित Unix epoch (January 1, 1970) उपयोग करता है और कोई host जानकारी समाहित नहीं करता। बाकी 74 bits यादृच्छिक हैं।
यह उपकरण UUID वर्शन और वेरिएंट कैसे पहचानता है
यह डीकोडर canonical UUID string की position 14 (version nibble) और position 19 (variant nibble) को पढ़ता है। किसी बाहरी स्थिति या संदर्भ की आवश्यकता नहीं — सभी जानकारी UUID string में ही निहित है।
// Detect UUID version from the 13th hex character (index 12)
function uuidVersion(uuid) {
const clean = uuid.replace(/-/g, '')
return parseInt(clean[12], 16)
}
uuidVersion('550e8400-e29b-41d4-a716-446655440000') // → 4
uuidVersion('018e4bc8-1000-7000-8000-000000000001') // → 7
uuidVersion('6ba7b810-9dad-11d1-80b4-00c04fd430c8') // → 1
// Detect variant from the 17th hex character (index 16, first char of 4th group)
function uuidVariant(uuid) {
const clean = uuid.replace(/-/g, '')
const b = parseInt(clean[16], 16)
if ((b & 0x8) === 0) return 'NCS'
if ((b & 0xC) === 0x8) return 'RFC 4122'
if ((b & 0xE) === 0xC) return 'Microsoft'
return 'Reserved'
}विशेष UUIDs
Nil UUID
Nil UUID 00000000-0000-0000-0000-000000000000 सभी शून्य है। इसे RFC 4122 में sentinel मान के रूप में परिभाषित किया गया है जिसका अर्थ है 'कोई UUID नहीं' — null के समान। यह कोई उत्पन्न UUID नहीं है।
Max UUID
Max UUID ffffffff-ffff-ffff-ffff-ffffffffffff सभी ones (हर byte में 0xFF) है। RFC 9562 में परिभाषित, यह nil UUID का पूरक है और अधिकतम sentinel मान के रूप में काम करता है।