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.
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.