UUID v5 là gì?
Một UUID v5 băm phần ghép giữa UUID không gian tên và tên bằng SHA-1, rồi lấy 128 bit đầu đặt vào bố cục UUID với số phiên bản 5.
Vì cùng đầu vào luôn cho ra cùng UUID, v5 là cách phổ biến nhất để dẫn xuất định danh mà không cần bộ đếm trung tâm. Khác biệt duy nhất so với v3 là hàm băm; trong thiết kế mới, SHA-1 được ưu tiên hơn MD5.
Cách sử dụng
- Chọn không gian tên: DNS, URL, OID hoặc X.500.
- Nhập tên cần băm, ví dụ tên miền hoặc đường dẫn tài nguyên.
- Bấm Tạo; cùng đầu vào luôn cho ra cùng UUID.
Dùng để làm gì
- Dẫn xuất định danh ổn định từ tên miền, tên người dùng hoặc đường dẫn.
- Định danh tài nguyên tính được, dùng chung giữa nhiều dịch vụ.
- Khóa bộ đệm không đổi chừng nào nội dung còn nguyên.
UUID v5 đứng ở đâu
| Lựa chọn | Khi nào dùng |
|---|---|
v5 | SHA-1: tất định và được chấp nhận rộng rãi |
v3 | Cùng kết quả nhưng bằng MD5, chỉ cần cho tương thích cũ |
v4 | Ngẫu nhiên; dùng khi không cần tính ổn định |
Các phiên bản UUID trong một bảng
| Phiên bản | Sắp xếp được | Dựa trên | Dùng cho |
|---|---|---|---|
| v1 | Không | Dấu thời gian + địa chỉ MAC | Hệ thống cũ vẫn còn phụ thuộc v1 |
| v3 | Không | Băm MD5 của một tên | Định danh tất định khi buộc phải dùng MD5 |
| v4 | Không | 122 bit ngẫu nhiên | Hầu hết mọi định danh thông dụng |
| v5 | Không | Băm SHA-1 của một tên | Khi cùng một tên phải luôn ra cùng một định danh |
| v6 | Có | Dấu thời gian đã đảo thứ tự | Định danh sắp xếp được mà vẫn giữ độ ngẫu nhiên |
| v7 | Có | Thời gian Unix theo mili giây | Khóa chính trong cơ sở dữ liệu và định danh sự kiện |
| v8 | Không | Bố cục bit của riêng bạn | Định dạng tùy biến hoặc thử nghiệm |
Cả bảy phiên bản đều dài 128 bit và được viết theo cùng dạng 8-4-4-4-12. Điều khác nhau chỉ là ý nghĩa của các bit.
Câu hỏi thường gặp
v5 khác v3 ở điểm nào?
Chỉ khác hàm băm: v5 dùng SHA-1, v3 dùng MD5. Cả hai đều tất định; với thiết kế mới thì chọn v5.
UUID v5 có dùng để lưu thông tin bí mật được không?
Không. Dù khó đảo ngược UUID để lấy lại tên, kẻ tấn công vẫn có thể thử hàng loạt nếu tên dễ đoán. Đừng dùng nó để sinh mật khẩu hay mã thông báo.
Cùng một tên ở hai không gian tên khác nhau có ra cùng UUID?
Không. Vì không gian tên cũng được đưa vào hàm băm, cùng một tên ở không gian tên DNS và URL sẽ cho ra hai UUID khác nhau.