UUID Çözücü
UUID yapısını, sürümünü ve gömülü verileri çözer ve inceler
UUID Girişi
İncelemek için yukarıya bir UUID yapıştırın
UUID Yapısı
UUID (Evrensel Benzersiz Tanımlayıcı), tirelerle beş gruba ayrılmış 32 onaltılık basamak olarak temsil edilen 128 bitlik bir değerdir:
Sürüm ve varyant, her UUID'de bulunması garanti edilen tek iki alandır.
Sürüm Alanı
Sürüm nibble'ı, üçüncü grubun ilk onaltılık basamağıdır (tam dizide 14. konum).
const hex = uuid.replace(/-/g, '') const version = parseInt(hex[12], 16) // single hex digit → 1, 2, 3, 4, 5, 6, 7, or 8
Sürüm 7 (UUID v7), RFC 9562'de (2024) tanıtılan en yeni yaygın kullanılan sürümdür.
Varyant Alanı
Varyant, dördüncü grubun ilk baytının yüksek bitlerinde kodlanır.
| Yüksek bitler | İlk onaltılık basamak aralığı | Varyant | Açıklama |
|---|---|---|---|
| 0xxx xxxx | 0x00–0x7F | NCS geriye dönük uyumluluk | Eski Ağ Hesaplama Sistemi (NCS) UUID'leri. Geriye dönük uyumluluk için ayrılmıştır. |
| 10xx xxxx | 0x80–0xBF | RFC 4122 / RFC 9562 | Standart RFC 4122 / RFC 9562 UUID varyantı. Tüm modern UUID sürümleri (v1–v8) tarafından kullanılır. |
| 110x xxxx | 0xC0–0xDF | Microsoft geriye dönük uyumluluk | Farklı bayt sıralamasına sahip eski Microsoft COM/DCOM GUID'leri. Windows COM bileşenlerinde hâlâ karşılaşılır. |
| 111x xxxx | 0xE0–0xFF | Ayrılmış | Gelecekteki tanım için ayrılmıştır. Herhangi bir mevcut UUID sürümü tarafından kullanılmaz. |
Pratikte, karşılaştığınız neredeyse tüm UUID'ler RFC 4122 / RFC 9562 varyantını kullanır (10xx xxxx bit deseni, dördüncü grubun ilk baytı 0x80–0xBF aralığında). NCS, Microsoft COM ve Reserved varyantları, modern sistemlerde nadiren görülen eski formatlardır.
UUID Sürümleri Referansı
RFC 4122, 1–5 arası sürümleri tanımladı. RFC 9562 (2024), 6, 7 ve 8. sürümleri ekledi:
| Sürüm | Ad | Standart | Açıklama |
|---|---|---|---|
| v1 | Zaman tabanlı | RFC 4122 | Zaman damgası (Gregoryen dönemi, 100 ns hassasiyet) + MAC adresi. Ana bilgisayar başına sıralı ancak ana bilgisayar kimliğini sızdırır. |
| v2 | DCE Security | RFC 4122 | time_low alanı POSIX UID/GID ile değiştirilmiş UUID v1 tabanlı. Eski DCE/RPC sistemlerinin dışında nadiren kullanılır. |
| v3 | Ad tabanlı MD5 | RFC 4122 | Deterministik: ad alanı UUID + ad dizesinin MD5 karması. Aynı girdiler her zaman aynı UUID'yi verir. v5'i tercih edin. |
| v4 | Rastgele | RFC 4122 | 122 bit kriptografik açıdan güvenli rastgelelik. En yaygın genel amaçlı UUID sürümü. |
| v5 | Ad tabanlı SHA-1 | RFC 4122 | v3 gibi ama SHA-1 kullanır. MD5'ten daha fazla çakışmaya dayanıklı. Yeni ad tabanlı UUID'ler için v3'e tercih edilir. |
| v6 | Yeniden Sıralanmış Zaman | RFC 9562 | UUID v1 zaman damgası alanlarını UUID'nin kronolojik olarak sıralanabilir olması için yeniden sıralar. RFC 9562'de tanımlandı. |
| v7 | Unix Zamanı | RFC 9562 | Yüksek bitlere 48 bitlik Unix milisaniye zaman damgası + rastgele veri. Sıralanabilir ve B-ağacı dizini dostu. Yeni zaman sıralı ID'ler için tercih edilir. |
| v8 | Özel | RFC 9562 | Serbest biçimli: sürüm ve varyant dışındaki tüm bitler uygulamaya özeldir. |
UUID v1 Zaman Damgalarını Çözme
UUID v1, üç alana yayılmış bir 60 bitlik Gregoryen zaman damgası (15 Ekim 1582'den itibaren 100 nanosaniyelik aralıklar) gömer: time_low (bit 0–31), time_mid (bit 32–47) ve time_hi (bit 48–59).
// 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, hassas bilgi olarak ele alınmalıdır: gömülü MAC adresi ve kesin zaman damgası hem oluşturan makineyi hem de oluşturma zamanını tanımlayabilir.
UUID v7 Zaman Damgalarını Çözme
UUID v7, ilk 48 bite 48 bitlik Unix milisaniye zaman damgası gömer. Bu araç söz konusu bitleri okur ve milisaniye hassasiyetiyle UTC tarihine dönüştürür.
// 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'in aksine UUID v7 zaman damgası, tanıdık Unix dönemini (1 Ocak 1970) kullanır ve herhangi bir ana bilgisayar bilgisi gömmez.
Bu Araç UUID Sürümünü ve Varyantını Nasıl Algılar
Çözücü, kanonik UUID dizesinin 14. konumunu (sürüm nibble'ı) ve 19. konumunu (varyant nibble'ı) okur.
// 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'
}Özel UUID'ler
Nil UUID
Nil UUID 00000000-0000-0000-0000-000000000000 tamamı sıfırdır. RFC 4122 tarafından 'UUID yok' anlamında sentinel değeri olarak tanımlanmıştır — null'a benzer.
Maksimum UUID
Maksimum UUID ffffffff-ffff-ffff-ffff-ffffffffffff tamamı birdir. RFC 9562'de tanımlanan bu UUID, nil UUID'nin tamamlayıcısıdır.