Trình tạo UUID Phiên bản 3 (Dựa trên tên MD5)

Tạo UUID nhất quán sử dụng không gian tên và tên với băm MD5

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 v3 là gì?

Phiên bản UUID 3 là một định danh 128-bit dựa trên namespace (chuỗi 36 ký tự) theo RFC 4122 sử dụng băm MD5. Nó bao gồm:

  • Namespace UUID: Một namespace UUID được định nghĩa sẵn hoặc tùy chỉnh
  • Name: Một chuỗi do người dùng cung cấp để băm
  • Băm MD5: Áp dụng cho sự kết hợp namespace + tên

Ví dụ định dạng: 9125a8dc-52ee-365b-a5aa-81b0b3681cf6

Cách UUID v3 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 các byte của namespace UUID với các byte của chuỗi tên
  3. Tính toán băm MD5 của giá trị nối
  4. Đặt các bit phiên bản thành 0011 (phiên bản 3)
  5. Đặt các bit biến thể thành 10 (tiêu chuẩn RFC 4122)
  6. Lắp ráp thành 32 chữ số hex với dấu gạch ngang: định dạng 8-4-4-4-12

Ưu điểm & Lưu ý

AdvantagesConsiderations
  • Tạo ra xác định trước
  • Đầu vào giống nhau = UUID giống nhau
  • Không cần trạng thái
  • Không có vấn đề về quyền riêng tư
  • MD5 có độ an toàn mật mã yếu
  • Không theo thứ tự thời gian/không thể sắp xếp
  • Ưu tiên UUID v5 (SHA-1)
  • Không có thời gian tạo nhúng

Cấu trúc UUID v3

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

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

NameUUIDPurpose
DNS6ba7b810-9dad-11d1-80b4-00c04fd430c8Tên miền
URL6ba7b811-9dad-11d1-80b4-00c04fd430c8URLs
OID6ba7b812-9dad-11d1-80b4-00c04fd430c8ISO OIDs
X.500 DN6ba7b814-9dad-11d1-80b4-00c04fd430c8Tên phân biệt X.500

UUID v3 so 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ộ 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ộ MAC
UUID v7Thời gian + ngẫu nhiênID có thể sắp xếp✅ Riêng tư

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

  • Định danh dựa trên URL: Tạo UUID từ URL
  • ID theo miền: Chuyển đổi tên DNS thành UUID
  • ID tệp xác định trước: Định địa chỉ nội dung
  • ID người dùng: Từ email hoặc tên người dùng
  • Mục cấu hình: Cho khóa nhất quán
  • Tham chiếu tài liệu: Hệ thống quản lý nội dung

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

UUID v3 có an toàn mật mã không?

Không thực sự. UUID v3 sử dụng MD5, vốn có những điểm yếu mật mã đã biết. Để bảo mật cao hơn, hãy xem xét UUID v5 (SHA-1) hoặc UUID v4 (ngẫu nhiên).

Các đầu vào giống nhau có luôn tạo ra cùng một UUID v3 không?

Có. UUID v3 là xác định trước - cùng namespace và tên sẽ luôn tạo ra UUID giống hệt, rất hữu ích cho ID có thể tái tạo.

Sự khác biệt giữa UUID v3 và v5 là gì?

Chúng hoạt động giống nhau ngoại trừ v3 dùng MD5 còn v5 dùng SHA-1. UUID v5 thường được ưu tiên vì SHA-1 mạnh mật mã hơn MD5.

Tôi có thể tạo namespace riêng 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.

UUID v3 có phù hợp cho token bảo mật không?

Không. Do điểm yếu của MD5 và tính xác định, UUID v3 không được khuyến nghị cho token bảo mật hoặc bất cứ thứ gì cần tính không thể đoán trước.

Resources