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ẩnNCS- Hệ thống điện toán mạng (lỗi thời)Microsoft- Biến thể Microsoft GUIDReserved- 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: MicrosoftE-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}$';