UUID là gì?
UUID (Universally Unique Identifier — mã định danh duy nhất toàn cầu), còn được gọi là GUID, là một giá trị 128 bit dùng để gắn nhãn thông tin một cách độc nhất trong các hệ thống máy tính mà không cần đến một cơ quan cấp phát trung tâm. Công cụ này tạo ra UUID phiên bản 4, gần như được sinh hoàn toàn từ các con số ngẫu nhiên. Với 122 bit ngẫu nhiên, xác suất hai UUID trùng nhau nhỏ đến mức gần như không thể xảy ra, nên chúng được coi là duy nhất trên phạm vi toàn cầu. Đây là một chuẩn phổ quát, không phụ thuộc vào ngôn ngữ lập trình (RFC 4122).
Cách sử dụng công cụ
Hãy chọn số lượng UUID bạn cần (từ 1 đến 50), chọn định dạng chữ thường hoặc chữ hoa, và quyết định có thêm dấu gạch nối tiêu chuẩn hay không. Nhấn nút tạo và sao chép kết quả. UUID rất hữu ích khi dùng làm khóa chính trong cơ sở dữ liệu, ID cho các yêu cầu API, tên tệp, mã phiên (session token), và mã định danh trong các hệ thống phân tán — những nơi bạn không thể dựa vào bộ đếm tự tăng.
Giải thích định dạng
Một UUID phiên bản 4 được viết dưới dạng 32 chữ số thập lục phân (hex), chia thành năm nhóm cách nhau bởi dấu gạch nối theo cấu trúc 8-4-4-4-12, ví dụ xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx. Cấu trúc đầy đủ có thể biểu diễn như sau:
Chữ số hiển thị là 4 dùng để xác định phiên bản. Chữ số hiển thị là y mã hóa biến thể (variant) và phải là một trong các giá trị 8, 9, a hoặc b. Mọi ký tự x còn lại đều là một chữ số hex ngẫu nhiên.
Ví dụ minh họa
Giả sử ta có một chuỗi hex ngẫu nhiên như 3f9a7c1e b204 1d88 9c33 a7f019be24c1. Để biến nó thành một UUID v4 hợp lệ, ta đặt chữ số thứ 13 thành 4 và chữ số thứ 17 thành một chữ số biến thể, từ đó thu được ví dụ 3f9a7c1e-b204-4d88-9c33-a7f019be24c1. Hãy để ý chữ 4 nằm sau dấu gạch nối thứ hai và chữ 9 (một giá trị biến thể hợp lệ) nằm sau dấu gạch nối thứ ba.
Câu hỏi thường gặp
Những UUID này có an toàn về mặt mật mã không? Chúng được tạo từ nguồn số giả ngẫu nhiên của nền tảng và hoàn toàn phù hợp để làm mã định danh. Tuy nhiên, với các bí mật yêu cầu bảo mật cao, bạn nên dùng một trình sinh số ngẫu nhiên chuyên dụng cho mật mã.
Hai UUID có khi nào trùng nhau không? Về lý thuyết là có, nhưng xác suất gần như bằng không — bạn sẽ phải tạo ra hàng tỷ UUID mỗi giây trong nhiều năm thì mới có chút khả năng thực tế xảy ra trùng lặp.
Bỏ dấu gạch nối có làm thay đổi giá trị không? Không. Dấu gạch nối chỉ mang tính hình thức; 128 bit bên dưới vẫn hoàn toàn giống nhau.