Chuyển đến nội dung chính

Tạo giá trị UUID v5 tất định

UUID phiên bản 5 được suy ra từ UUID không gian tên và một tên bằng SHA-1. Bất kỳ ai băm cùng không gian tên và cùng tên đều nhận được đúng cùng một UUID, nên có thể tính lại ID thay vì lưu trữ.

Ví dụ minh họa

Không gian tên (UUID)
DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
Tên
example.com
Kết quả
cfbff0d1-9375-5685-968c-48ce8b15ae17
Không gian tên (UUID)
DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
Tên
Example.com
Kết quả
a1feb884-07f5-5a14-8edb-cb659a7fbadc

Cách hoạt động

  • 16 byte của không gian tên được nối với các byte UTF-8 của tên rồi băm bằng SHA-1. 16 byte đầu của bản băm trở thành UUID sau khi đặt các bit phiên bản (5) và biến thể.
  • RFC 9562 định nghĩa sẵn không gian tên cho tên DNS, URL, OID của ISO và tên phân biệt X.500. Bất kỳ UUID nào của riêng bạn cũng có thể dùng làm không gian tên riêng.
  • Tên được so sánh từng byte: chữ hoa/thường, khoảng trắng và dấu gạch chéo ở cuối đều làm thay đổi kết quả, vì vậy hãy chuẩn hóa tên trước. Vì kết quả có thể đoán trước, đừng bao giờ dùng UUID v5 làm bí mật.
Phiên bản UUID

Tạo 1-100 UUID cùng một lúc

Không gian tên DNS: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (mặc định)

Tên để băm (ví dụ: tên miền, email, v.v.)

Về UUID

UUID v1: UUID dựa trên thời gian bao gồm dấu thời gian và địa chỉ MAC của máy tính tạo UUID. Hữu ích khi bạn cần biết khi nào UUID được tạo.

UUID v4: UUID được tạo ngẫu nhiên. Đây là phiên bản được sử dụng phổ biến nhất và cung cấp tính duy nhất tốt với rò rỉ thông tin tối thiểu.

UUID v5: UUID dựa trên tên sử dụng băm SHA-1. Với cùng một không gian tên và tên, bạn sẽ luôn nhận được cùng một UUID. Hữu ích cho việc tạo UUID xác định.

Các hướng dẫn UUID khác