Tạo giá trị UUID v4 ngẫu nhiên
UUID phiên bản 4 là giá trị 128 bit, trong đó 122 bit lấy từ nguồn ngẫu nhiên an toàn về mặt mật mã. 6 bit còn lại đánh dấu phiên bản và biến thể RFC, vì vậy nhóm thứ ba của mọi UUID v4 đều bắt đầu bằng 4.
Ví dụ minh họa
- Byte đầu vào ngẫu nhiên
- 9d 41 7c 02 e8 5b 13 f6 2a 7e c1 94 06 d3 b8 5f
- Kết quả
- 9d417c02-e85b-43f6-aa7e-c19406d3b85f
| Số UUID đã tạo | Xác suất có ít nhất một bản trùng |
|---|---|
| 10⁶ | ≈ 9,4 × 10⁻²⁶ |
| 10⁹ | ≈ 9,4 × 10⁻²⁰ |
| 10¹² | ≈ 9,4 × 10⁻¹⁴ |
| 10¹⁵ | ≈ 9,4 × 10⁻⁸ |
Số UUID cần để xác suất trùng đạt 50%: ≈ 2,71 × 10¹⁸
Cách hoạt động
- Trình tạo điền 16 byte bằng dữ liệu ngẫu nhiên an toàn, sau đó đặt nibble cao của byte 6 thành 4 (phiên bản) và hai bit cao nhất của byte 8 thành 10 (biến thể). Do đó nhóm thứ ba bắt đầu bằng 4 và nhóm thứ tư bắt đầu bằng 8, 9, a hoặc b.
- Với 2¹²² giá trị khả dĩ, phép xấp xỉ nghịch lý ngày sinh p ≈ 1 − e^(−n²/2¹²³) cho biết xác suất để n UUID ngẫu nhiên có ít nhất một bản trùng.
- UUID v4 không tiết lộ dấu thời gian hay thông tin phần cứng. Hãy dùng nó làm mã định danh, không dùng làm mật khẩu hay bí mật xác thực.
Tạo 1-100 UUID cùng một lúc
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.