Trình tạo UUID Phiên bản 5 (Dựa trên tên SHA-1)

Tạo UUID nhất quán sử dụng namespace và tên với băm SHA-1

Cài đặt NamespaceSHA-1

UUID phiên bản v3 và v5 yêu cầu namespace và tên để tạo UUID xác định trước.

Phải là UUID hợp lệ. Sử dụng menu thả xuống để chọn namespace có sẵn.
Bất kỳ chuỗi văn bản nào sẽ được băm để tạo UUID.

Thử các ví dụ này:

UUID v5 là gì?

Phiên bản UUID 5 là một định danh 128-bit dựa trên namespace (chuỗi 36 ký tự) được định nghĩa trong RFC 4122. Nó kết hợp:

  • Namespace UUID: UUID được định nghĩa sẵn hoặc tùy chỉnh để phạm vi tạo
  • Name: Giá trị chuỗi do người dùng định nghĩa trong namespace
  • SHA-1 hash: Thuật toán mật mã được sử dụng để tạo kết quả

Ví dụ định dạng: 2ed6657d-e927-5eb1-9a03-0242ac130003

Cách UUID v5 hoạt động

  1. Chọn một namespace UUID (được định nghĩa sẵn hoặc tùy chỉnh)
  2. Nối namespace UUID và chuỗi tên
  3. Tính toán SHA-1 hash của giá trị đã nối
  4. Đặt các bit phiên bản (0101) và bit biến thể (10)
  5. Tập hợp dưới dạng 32 chữ số hex với dấu gạch ngang: định dạng 8-4-4-4-12

Ưu điểm & Cân nhắc

AdvantagesConsiderations
  • Xác định trước (đầu vào giống nhau = UUID giống nhau)
  • Tổ chức có namespace
  • Không phụ thuộc mạng hoặc thời gian
  • Không có vấn đề về quyền riêng tư (không có địa chỉ MAC)
  • Không theo thứ tự thời gian
  • Đầu vào giống nhau luôn tạo ra UUID giống nhau
  • Việc chọn namespace ảnh hưởng đến tính duy nhất
  • SHA-1 có những điểm yếu mật mã đã biết

Cấu trúc UUID v5

BitsContent
0-4748 bit đầu tiên của SHA-1 hash
48-51Phiên bản (0101 cho v5)
52-6312 bit tiếp theo của SHA-1 hash
64-65Biến thể (10 cho RFC4122)
66-12762 bit còn lại của SHA-1 hash

So sánh UUID v5 với các phiên bản khác

VersionDựa trênTrường hợp sử dụngPrivacy
UUID v1Thời gian + MACID theo thứ tự thời gian⚠️ Tiết lộ địa chỉ MAC
UUID v3Namespace + MD5ID xác định trước✅ Riêng tư
UUID v4RandomID ngẫu nhiên an toàn✅ Riêng tư
UUID v5Namespace + SHA-1ID xác định trước✅ Riêng tư
UUID v6Thời gian (được sắp xếp lại)ID có thể sắp xếp⚠️ Tiết lộ địa chỉ MAC
UUID v7Thời gian + ngẫu nhiênID có thể sắp xếp✅ Riêng tư

Namespace được định nghĩa sẵn

NamespaceUUIDPurpose
DNS6ba7b810-9dad-11d1-80b4-00c04fd430c8Dành cho tên miền
URL6ba7b811-9dad-11d1-80b4-00c04fd430c8Dành cho URL
OID6ba7b812-9dad-11d1-80b4-00c04fd430c8Dành cho ISO OID
X.500 DN6ba7b814-9dad-11d1-80b4-00c04fd430c8Dành cho X.500 Distinguished Names

Các trường hợp sử dụng phổ biến

  • Địa chỉ nội dung: ID nhất quán cho nội dung giống nhau
  • Hệ thống phân tán: Tài nguyên được đặt tên trên các hệ thống
  • Ánh xạ URL: Chuyển đổi URL thành định danh ổn định
  • Quản lý cấu hình: Theo dõi các mục cấu hình được đặt tên
  • Loại bỏ dữ liệu trùng lặp: Xác định các bản ghi giống nhau
  • Federation: Định danh nhất quán trên các hệ thống

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

UUID v5 có tốt hơn UUID v3 không?

Có, cho hầu hết các trường hợp sử dụng. UUID v5 sử dụng SHA-1, mạnh về mặt mật mã hơn thuật toán MD5 được dùng trong UUID v3. Tuy nhiên, cả hai đều cung cấp khả năng tạo xác định trước.

Giá trị UUID v5 có thể trùng nhau không?

Va chạm về lý thuyết là có thể nhưng cực kỳ hiếm trong thực tế do đặc tính của SHA-1. Sử dụng namespace hoặc chuỗi tên khác nhau gần như loại bỏ rủi ro va chạm.

SHA-1 có đủ an toàn cho UUID v5 không?

Đối với mục đích UUID, SHA-1 vẫn phù hợp mặc dù có điểm yếu mật mã. UUID v5 không nhằm mục đích bảo mật mà để tạo định danh nhất quán.

Tôi có thể tạo namespace riêng cho UUID v5 không?

Có. RFC 4122 định nghĩa các namespace chuẩn (DNS, URL, OID, X.500), bạn có thể tạo namespace tùy chỉnh bằng bất kỳ UUID hợp lệ nào, thường là UUID v4 ngẫu nhiên.

Tên giống nhau có luôn tạo ra UUID v5 giống nhau không?

Có, nhưng chỉ trong cùng một namespace. Tên giống nhau trong các namespace khác nhau sẽ tạo UUID khác nhau, đây là tính năng quan trọng để tổ chức định danh.

Resources