UUID Decoder
Mendekode dan memeriksa struktur, versi, dan data yang tertanam dalam UUID
Input UUID
Tempel UUID di atas untuk memeriksanya
Struktur UUID
UUID (Universally Unique Identifier) adalah nilai 128-bit yang direpresentasikan sebagai 32 digit heksadesimal yang dibagi menjadi lima grup oleh tanda hubung:
Versi dan varian adalah dua field yang dijamin ada di setiap UUID.
Field Versi
Nibble versi adalah digit hex pertama dari grup ketiga (posisi 14 dalam string lengkap).
const hex = uuid.replace(/-/g, '') const version = parseInt(hex[12], 16) // single hex digit โ 1, 2, 3, 4, 5, 6, 7, or 8
Versi 7 (UUID v7) adalah versi terbaru yang banyak digunakan, diperkenalkan dalam RFC 9562 (2024).
Field Varian
Varian dikodekan dalam bit tinggi dari byte pertama grup keempat.
| Bit tinggi | Kisaran digit hex pertama | Varian | Deskripsi |
|---|---|---|---|
| 0xxx xxxx | 0x00โ0x7F | Kompatibilitas mundur NCS | UUID NCS (Network Computing System) warisan. Dicadangkan untuk kompatibilitas mundur. |
| 10xx xxxx | 0x80โ0xBF | RFC 4122 / RFC 9562 | Varian UUID RFC 4122 / RFC 9562 standar. Digunakan oleh semua versi UUID modern (v1โv8). |
| 110x xxxx | 0xC0โ0xDF | Kompatibilitas mundur Microsoft | GUID Microsoft COM/DCOM warisan dengan pengurutan byte yang berbeda. Masih ditemui di komponen Windows COM. |
| 111x xxxx | 0xE0โ0xFF | Dicadangkan | Dicadangkan untuk definisi masa depan. Tidak digunakan oleh versi UUID saat ini. |
Dalam praktiknya, hampir semua UUID yang Anda temui menggunakan varian RFC 4122 / RFC 9562 (pola bit 10xx xxxx, byte pertama grup keempat dalam rentang 0x80โ0xBF). Varian NCS, Microsoft COM, dan Reserved adalah format lama yang jarang terlihat di sistem modern.
Referensi Versi UUID
RFC 4122 mendefinisikan versi 1โ5. RFC 9562 (2024) menambahkan versi 6, 7, dan 8:
| Versi | Nama | Standar | Deskripsi |
|---|---|---|---|
| v1 | Berbasis waktu | RFC 4122 | Timestamp (epoch Gregorian, presisi 100ns) + alamat MAC. Berurutan per host tetapi membocorkan identitas host. |
| v2 | DCE Security | RFC 4122 | Berdasarkan UUID v1 dengan field time_low digantikan oleh POSIX UID/GID. Jarang digunakan di luar sistem DCE/RPC warisan. |
| v3 | Berbasis nama MD5 | RFC 4122 | Deterministik: hash MD5 dari UUID namespace + string nama. Input yang sama selalu menghasilkan UUID yang sama. Lebih pilih v5. |
| v4 | Acak | RFC 4122 | 122 bit keacakan yang aman secara kriptografi. Versi UUID paling umum untuk tujuan umum. |
| v5 | Berbasis nama SHA-1 | RFC 4122 | Seperti v3 tetapi menggunakan SHA-1. Lebih tahan tabrakan dari MD5. Lebih disukai daripada v3 untuk UUID berbasis nama baru. |
| v6 | Waktu yang Disusun Ulang | RFC 9562 | Menyusun ulang field timestamp UUID v1 sehingga UUID dapat diurutkan secara kronologis. Didefinisikan dalam RFC 9562. |
| v7 | Waktu Unix | RFC 9562 | Timestamp Unix milidetik 48-bit di bit tinggi + data acak. Dapat diurutkan dan ramah indeks B-tree. Lebih disukai untuk ID berurutan waktu baru. |
| v8 | Kustom | RFC 9562 | Bentuk bebas: semua bit kecuali versi dan varian ditentukan oleh aplikasi. Tidak ada algoritme pembuatan yang ditentukan. |
Mendekode Timestamp UUID v1
UUID v1 menyematkan timestamp Gregorian 60-bit (interval 100 nanodetik sejak 15 Oktober 1582) yang tersebar di tiga field.
// 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 harus diperlakukan sebagai sensitif: alamat MAC tertanam dan timestamp tepat dapat mengidentifikasi mesin penghasil dan waktu pembuatan.
Mendekode Timestamp UUID v7
UUID v7 menyematkan timestamp Unix milidetik 48-bit di 48 bit pertama (grup pertama + 4 digit pertama grup kedua).
// 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)
Tidak seperti UUID v1, timestamp UUID v7 menggunakan epoch Unix yang familier (1 Januari 1970) dan tidak menyematkan informasi host apa pun.
Cara Alat Ini Mendeteksi Versi dan Varian UUID
Decoder membaca posisi 14 (nibble versi) dan posisi 19 (nibble varian) dari string UUID kanonik.
// 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'
}UUID Khusus
Nil UUID
Nil UUID 00000000-0000-0000-0000-000000000000 semuanya nol. Didefinisikan oleh RFC 4122 sebagai nilai sentinel yang berarti 'tidak ada UUID' โ analogis dengan null.
Max UUID
Max UUID ffffffff-ffff-ffff-ffff-ffffffffffff semuanya satu (0xFF di setiap byte). Didefinisikan dalam RFC 9562.