Giải mã & Xác thực UUID | Phân tích Phiên bản (v1, v4, v7), Thời gian

Nhập UUID của bạn vào trường trên và công cụ này (Trình phân tích UUID) sẽ ngay lập tức thực hiện kiểm tra trực tuyến, xác định phiên bản, tính hợp lệ và trích xuất thông tin ẩn.

Bộ giải mã UUID là gì?

Bộ giải mã UUID là một công cụ phân tích UUID (Định danh duy nhất toàn cầu) và trích xuất tất cả thông tin có sẵn từ đó. UUID không chỉ là một chuỗi ký tự ngẫu nhiên – tùy thuộc vào phiên bản, nó có thể chứa dấu thời gian, thông tin hệ thống hoặc hàm băm của dữ liệu xác định.

Bạn có thể nhận được thông tin gì từ UUID?

Thông tin cơ bản về UUID

Phiên bản UUID:

  • Xác định loại và cấu trúc của UUID (v1, v3, v4, v5, v6, v7)
  • Được trích xuất từ ký tự thập lục phân thứ 13

Biến thể:

  • RFC 4122 - Biến thể UUID tiêu chuẩn
  • NCS - Hệ thống điện toán mạng (lỗi thời)
  • Microsoft - Biến thể Microsoft GUID
  • Reserved - Dành riêng cho sử dụng trong tương lai

UUID v1 - Dấu thời gian + Địa chỉ MAC

Bạn có thể nhận được gì:

  • Thời gian tạo chính xác - ngày và giờ với độ chính xác 100 nano giây
  • Chuỗi đồng hồ - số thứ tự để ngăn ngừa xung đột
  • ID nút - ban đầu là địa chỉ MAC, thường là các giá trị ngẫu nhiên

Ví dụ:

UUID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8

Phiên bản: v1 (Dấu thời gian + MAC)
Biến thể: RFC 4122
Ngày và giờ: 15.10.1997 04:25:33.000
Chuỗi đồng hồ: 724
ID nút: 00:C0:4F:D4:30:C8

Sử dụng:

  • Xác định thời điểm tạo bản ghi
  • Kiểm toán và phân tích pháp y
  • Gỡ lỗi các vấn đề phụ thuộc thời gian

UUID v3/v5 - Dựa trên Hash

Bạn có thể nhận được gì:

  • Loại hash - MD5 (v3) hoặc SHA-1 (v5)
  • Không thể lấy - không gian tên và tên gốc (hash một chiều)

Ví dụ:

UUID: 886313e1-3b8a-5372-9b90-0c9aee199e5d

Phiên bản: v5 (hash SHA-1)
Biến thể: RFC 4122
Loại: UUID dựa trên Hash (xác định)
Lưu ý: Không thể khôi phục không gian tên và tên gốc từ UUID

Sử dụng:

  • Xác minh UUID là xác định
  • Xác định loại UUID trong cơ sở dữ liệu
  • Kiểm tra tính nhất quán của các định danh dựa trên hash

UUID v4 - Ngẫu nhiên

Bạn có thể nhận được gì:

  • Phiên bản - xác nhận là ngẫu nhiên
  • Biến thể - tiêu chuẩn RFC 4122
  • Không có dữ liệu bổ sung - các bit hoàn toàn ngẫu nhiên

Ví dụ:

UUID: f47ac10b-58cc-4372-a567-0e02b2c3d479

Phiên bản: v4 (Ngẫu nhiên)
Biến thể: RFC 4122
Loại: UUID được tạo ngẫu nhiên

Sử dụng:

  • Xác minh UUID là ngẫu nhiên (không xác định)
  • Kiểm tra định dạng UUID chính xác
  • Xác thực UUID trước khi lưu vào cơ sở dữ liệu

UUID v6 - Dấu thời gian được sắp xếp

Bạn có thể nhận được gì:

  • Thời gian tạo chính xác - được sắp xếp lại để có hiệu suất DB tốt hơn
  • Chuỗi đồng hồ - số thứ tự
  • ID nút - định danh nút

Ví dụ:

UUID: 1ec9414c-232a-6b00-b3c8-9e6bdeced846

Phiên bản: v6 (Dấu thời gian được sắp xếp)
Biến thể: RFC 4122
Ngày và giờ: 30.01.2026 14:23:45.123
Chuỗi đồng hồ: 3272
ID nút: 9E:6B:DE:CE:D8:46

Sử dụng:

  • Xác định thời gian tạo bản ghi
  • Phân tích thứ tự thời gian trong DB
  • Gỡ lỗi hệ thống phân tán

UUID v7 - Dấu thời gian Unix

Bạn có thể nhận được gì:

  • Dấu thời gian Unix - mili giây kể từ 1.1.1970
  • Ngày và giờ - định dạng dấu thời gian Unix tiêu chuẩn
  • Phần ngẫu nhiên - không thể giải mã

Ví dụ:

UUID: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f

Phiên bản: v7 (Dấu thời gian Unix)
Biến thể: RFC 4122
Ngày và giờ: 30.01.2026 14:23:45.123

Sử dụng:

  • Lấy thời gian tạo của các UUID hiện đại
  • Phân tích thứ tự thời gian
  • Di chuyển dữ liệu với dấu thời gian

Cấu trúc UUID

UUID có định dạng: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

6ba7b810-9dad-11d1-80b4-00c04fd430c8
│      │ │  │ │  │ │  │ │           │
│      │ │  │ │  │ │  │ └───────────┴─ Nút (48 bit)
│      │ │  │ │  │ └──┴─────────────── Chuỗi đồng hồ (14 bit)
│      │ │  │ └──┴────────────────────── Biến thể (2-3 bit)
│      │ │  └──┴───────────────────────────── Phiên bản (4 bit) + Time High
│      │ └──┴──────────────────────────────────── Time Mid (16 bit)
└─────────────────────────────────────────── Time Low (32 bit)

Trích xuất phiên bản và biến thể

Phiên bản (M):

  • Vị trí: Ký tự thập lục phân thứ 13
  • Giá trị: 1-7 (các phiên bản UUID khác nhau)

Biến thể (N):

  • Vị trí: Ký tự thập lục phân thứ 17
  • 0-7: NCS (Dành riêng)
  • 8-B: RFC 4122 (tiêu chuẩn)
  • C-D: Microsoft
  • E-F: Tương lai (Dành riêng)

Ví dụ thực tế

Gỡ lỗi - Xác định thời gian tạo bản ghi

Kịch bản: Người dùng báo cáo rằng dữ liệu của họ đã biến mất. Bạn cần xác định thời điểm bản ghi được tạo.

UUID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Đã giải mã: 15.10.1997 04:25:33.000

→ Bản ghi được tạo vào năm 1997

Phân tích pháp y - Xác minh trình tự thời gian

Kịch bản: Kiểm tra xem các sự kiện có diễn ra đúng trình tự hay không.

UUID 1: 1ec9414c-232a-6b00-b3c8-9e6bdeced846 → 30.01.2026 14:23:45
UUID 2: 1ec9414d-557b-6a00-8f32-1234567890ab → 30.01.2026 14:25:12

→ UUID 2 được tạo sau (đúng thứ tự)

Xác định loại UUID trong cơ sở dữ liệu

Kịch bản: Bạn có các UUID hỗn hợp trong DB và cần biết UUID nào là ngẫu nhiên và UUID nào có dấu thời gian.

f47ac10b-58cc-4372-a567-0e02b2c3d479 → v4 (ngẫu nhiên, không có dấu thời gian)
6ba7b810-9dad-11d1-80b4-00c04fd430c8 → v1 (có dấu thời gian)
017f22e2-79b0-7cc3-98c4-dc0c0c07398f → v7 (có dấu thời gian)

→ Chỉ UUID v1 và v7 chứa thông tin thời gian

Hạn chế và những gì không thể lấy được

❌ UUID v3/v5 - Không thể giải mã hash

Không thể:

  • Khôi phục không gian tên gốc
  • Khôi phục tên/giá trị gốc
  • Xác định dữ liệu nào đã được băm

Lý do: MD5 và SHA-1 là các hàm băm một chiều.

❌ UUID v4 - Không có dữ liệu ẩn

Không thể:

  • Lấy bất kỳ siêu dữ liệu nào
  • Xác định thời gian tạo
  • Xác định nguồn

Lý do: UUID v4 hoàn toàn ngẫu nhiên, không chứa thông tin cấu trúc.

⚠️ UUID v1/v6 - ID nút có thể ngẫu nhiên

Hạn chế:

  • Trong các triển khai hiện đại, ID nút thường là ngẫu nhiên (không phải địa chỉ MAC thật)
  • Vì lý do bảo mật, địa chỉ MAC thường được thay thế bằng các giá trị ngẫu nhiên
  • Không thể xác định đáng tin cậy một máy cụ thể

Xác thực UUID

Bộ giải mã cũng hoạt động như một công cụ xác thực UUID.

Kiểm tra tính hợp lệ của UUID

Bộ giải mã tự động xác thực:

  • ✅ Định dạng chính xác (8-4-4-4-12 ký tự thập lục phân)
  • ✅ Ký tự thập lục phân hợp lệ (0-9, a-f)
  • ✅ Độ dài chính xác (36 ký tự bao gồm dấu gạch ngang, 32 nếu không)

Nhận diện UUID không hợp lệ

Ví dụ không hợp lệ:

❌ 6ba7b810-9dad-11d1-80b4          (quá ngắn)
❌ 6ba7b810-9dad-11d1-80b4-GHIJKLMN (ký tự không hợp lệ)
❌ 6ba7b81-09dad-11d1-80b4-00c04fd4 (định dạng sai)

Dành cho nhà phát triển

Triển khai trong JavaScript

// Trích xuất phiên bản từ UUID
function getUUIDVersion(uuid) {
    const cleaned = uuid.replace(/-/g, '');
    return parseInt(cleaned[12], 16);
}

// Trích xuất dấu thời gian từ UUID v7
function extractV7Timestamp(uuid) {
    const cleaned = uuid.replace(/-/g, '');
    const timeHi = parseInt(cleaned.substring(0, 8), 16);
    const timeLow = parseInt(cleaned.substring(8, 12), 16);
    const unixMs = Number(BigInt("0x" + cleaned.substring(0, 12)) >> 16n);
    return new Date(unixMs);
}

// Ví dụ
const uuid = '017f22e2-79b0-7cc3-98c4-dc0c0c07398f';
console.log(getUUIDVersion(uuid)); // 7
console.log(extractV7Timestamp(uuid)); // Date object

Xác thực UUID bằng Regex

const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;

function isValidUUID(uuid) {
    return uuidRegex.test(uuid);
}

Câu hỏi thường gặp (FAQ)

Tôi có thể lấy thời gian tạo từ UUID v4 không? Không, UUID v4 hoàn toàn ngẫu nhiên và không chứa bất kỳ thông tin thời gian nào. Đối với UUID có thời gian, hãy sử dụng v1, v6 hoặc v7.
Tại sao ID nút trong UUID v1 lại ngẫu nhiên thay vì địa chỉ MAC? Các triển khai hiện đại sử dụng ID nút ngẫu nhiên để bảo vệ quyền riêng tư. Việc tiết lộ địa chỉ MAC thật có thể là một rủi ro bảo mật.
Tôi có thể khôi phục URL hoặc tên gốc từ UUID v5 không? Không, UUID v5 sử dụng hash SHA-1 là một chiều. Không thể khôi phục dữ liệu gốc từ hash.
Làm cách nào để biết UUID là ngẫu nhiên (v4)? Bộ giải mã sẽ hiển thị phiên bản UUID. Nếu phiên bản là 4, đó là một UUID được tạo ngẫu nhiên không có siêu dữ liệu bổ sung.
Dấu thời gian trong UUID v1 có chính xác không? Có, UUID v1 có độ chính xác lý thuyết là 100 nano giây (từ ngày 15 tháng 10 năm 1582). Trong thực tế, điều này phụ thuộc vào độ chính xác của đồng hồ hệ thống.
Tôi có thể sử dụng bộ giải mã để xác thực UUID không? Có, bộ giải mã tự động xác thực định dạng UUID và sẽ hiển thị lỗi nếu UUID không hợp lệ.

Bảo mật và Quyền riêng tư

UUID tiết lộ điều gì?

UUID v1/v6:

  • ⚠️ Thời gian tạo - có thể tiết lộ thời gian hoạt động
  • ⚠️ Tiềm ẩn địa chỉ MAC - rủi ro nhận dạng thiết bị (ngẫu nhiên trong các triển khai hiện đại)

UUID v4:

  • An toàn - không chứa siêu dữ liệu

UUID v7:

  • ⚠️ Dấu thời gian Unix - tiết lộ thời gian tạo

Khuyến nghị

  • ✅ Sử dụng UUID v4 để có quyền riêng tư tối đa
  • ⚠️ Cẩn thận với UUID v1/v6/v7 trong API công khai (chúng tiết lộ thông tin thời gian)
  • ✅ UUID v5 là xác định, nhưng không tiết lộ dữ liệu gốc
  • ⚠️ Hash MD5 không hoàn toàn an toàn

Sự thật thú vị

  • UUID v1 sớm nhất có thể: 15 tháng 10 năm 1582 00:00:00 (bắt đầu lịch Gregorian)
  • UUID v7 mới nhất: 10889-08-02 05:31:50.655 (giới hạn dấu thời gian Unix tính bằng mili giây)
  • Độ chính xác của UUID v1: 100 nano giây (lý thuyết là 10 triệu UUID mỗi giây)
  • UUID Nil: 00000000-0000-0000-0000-000000000000 (UUID “rỗng” đặc biệt)
  • UUID Max: ffffffff-ffff-ffff-ffff-ffffffffffff (giá trị tối đa)

Sử dụng trong các hệ thống khác nhau

PostgreSQL

-- Trích xuất phiên bản UUID
SELECT substring(id::text, 15, 1) as version
FROM users;

-- Lọc theo phiên bản
SELECT *
FROM users
WHERE substring(id::text, 15, 1) = '4';

MySQL

-- Kiểm tra định dạng UUID
SELECT id
FROM users
WHERE id REGEXP '^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$';