UltKit

Tạo UUID

Tạo UUID phiên bản 4 ngẫu nhiên, từ một đến một trăm mã mỗi lần, rồi sao chép thành danh sách. Các mã được sinh bởi bộ sinh số ngẫu nhiên an toàn về mật mã của trình duyệt, và công cụ kiểm tra cho bạn biết phiên bản cùng biến thể (variant) của bất kỳ UUID nào bạn dán vào.

0 ký tự · 0 từ · 0 dòng

Chạy hoàn toàn trong tab trình duyệt này. Văn bản của bạn không bao giờ được tải lên hay lưu trữ.

Các phiên bản UUID

Phiên bản là chữ số đầu tiên của nhóm thứ ba; biến thể được mã hóa trong chữ số đầu tiên của nhóm thứ tư (8, 9, a hoặc b với UUID theo RFC). Các ví dụ là vector kiểm thử từ RFC 9562.

Phiên bảnTạo từVí dụ
v1Dấu thời gian Gregorian + ID nút (MAC)c232ab00-9414-11ec-b3c8-9f6bdeced846
v3Hash MD5 của namespace + tên5df41881-3aed-3515-88a7-2f4a814cf09e
v4122 bit ngẫu nhiên919108f7-52d1-4320-9bac-f847db4148a8
v5Hash SHA-1 của namespace + tên2ed6657d-e927-568b-95e1-2665a8aea6a2
v6Dấu thời gian v1 được sắp xếp lại để ID sắp theo thời gian1ec9414c-232a-6b00-b3c8-9f6bdeced846
v7Mili giây Unix + bit ngẫu nhiên, có thể sắp xếp017f22e2-79b0-7cc3-98c4-dc0c0c07398f
v8Cấu trúc tùy chỉnh do ứng dụng định nghĩa2489e9ad-2ee2-8e00-8ec9-32d5f69181c0

UUID là gì và cách đọc một UUID

UUID (mã định danh duy nhất toàn cầu, trong phần mềm của Microsoft gọi là GUID) là một số 128 bit được viết thành 32 chữ số thập lục phân theo các nhóm 8-4-4-4-12, ví dụ f47ac10b-58cc-4372-a567-0e02b2c3d479. UUID được chuẩn hóa trong RFC 4122 vào năm 2005; tháng 5 năm 2024, tài liệu này được thay thế bằng RFC 9562, vốn giữ các phiên bản cũ và bổ sung ba phiên bản mới. Có hai vị trí cố định: chữ số đầu tiên của nhóm thứ ba là phiên bản (số 4 trong 4372), còn chữ số đầu tiên của nhóm thứ tư cho biết biến thể, là 8, 9, a hoặc b với mọi UUID tuân theo RFC.

Phiên bản 4 điền 122 bit còn lại bằng dữ liệu ngẫu nhiên. Không gian này lớn đến mức bạn phải tạo khoảng 2,7 tỉ tỉ (2,7 × 10¹⁸) UUID mới có 50% khả năng xuất hiện một cặp trùng, nên các hệ thống có thể tạo ID v4 độc lập trên nhiều máy mà không cần phối hợp. Trang này dùng crypto.randomUUID, hoặc crypto.getRandomValues nếu không có hàm trước, và không bao giờ dùng Math.random vì kết quả của hàm này không được thiết kế để không thể đoán trước. Các tùy chọn Chữ hoa và Không có dấu gạch ngang chỉ thay đổi cách hiển thị; giá trị vẫn giữ nguyên và hầu hết trình phân tích đều chấp nhận cả hai kiểu chữ.

v4, v7 và các phiên bản khác

Phiên bản 1 và 6 được tạo từ dấu thời gian và ID nút, ban đầu là địa chỉ MAC của máy tính, nên làm lộ ID được tạo ở đâu và khi nào. Phiên bản 3 và 5 băm một không gian tên và một tên bằng MD5 hoặc SHA-1, vì vậy cùng một đầu vào luôn cho ra cùng một UUID. Phiên bản 8 là bố cục tự do cho các lược đồ tùy chỉnh. Phiên bản mới quan trọng nhất là phiên bản 7: bắt đầu bằng dấu thời gian Unix 48 bit tính theo mili giây và điền phần còn lại bằng các bit ngẫu nhiên, nên các ID sắp xếp được theo thời gian tạo.

Thứ tự đó là lý do nên cân nhắc v7 cho khóa chính của cơ sở dữ liệu. Khóa v4 ngẫu nhiên rơi rải rác khắp chỉ mục B-tree, làm tách trang và giảm hiệu quả bộ nhớ đệm khi bảng lớn dần, còn khóa v7 xuất hiện theo thứ tự gần như tăng dần như cột tự tăng, nhưng vẫn tạo được mà không cần bộ đếm trung tâm. Chọn v4 khi bạn muốn một ID không tiết lộ gì, kể cả thời điểm tạo; chọn v7 khi hiệu năng chèn dữ liệu và thứ tự thời gian quan trọng. UUID là mã định danh, không phải bí mật: với mật khẩu và khóa bí mật API hãy dùng công cụ tạo mật khẩu chuyên dụng. Bạn có thể tìm thêm công cụ mã hóa và kiểm tra tại công cụ dành cho lập trình viên.

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

Hai UUID tạo ngẫu nhiên có thể trùng nhau không?
Về lý thuyết là có, trên thực tế là không. Với 122 bit ngẫu nhiên, ngay cả khi tạo một tỉ UUID v4 mỗi giây trong khoảng 86 năm, khả năng xảy ra một lần trùng cũng chỉ khoảng 50%, với điều kiện nguồn ngẫu nhiên đáng tin cậy.
UUID và GUID khác nhau như thế nào?
Về bản chất không có khác biệt. GUID là tên Microsoft dùng cho cùng loại mã định danh 128 bit. Một số công cụ của Microsoft hiển thị GUID bằng chữ hoa hoặc đặt trong dấu ngoặc nhọn, và trình kiểm tra ở đây chấp nhận cả hai dạng này.
Làm sao biết một UUID thuộc phiên bản nào?
Hãy nhìn chữ số đầu tiên của nhóm thứ ba: 4 là ngẫu nhiên, 7 là sắp xếp theo thời gian, 1 là dấu thời gian cộng với nút. Dán UUID vào mục Kiểm tra UUID để xem phiên bản và biến thể.
Có nên dùng UUIDv7 thay cho v4 làm khóa cơ sở dữ liệu không?
Thường là có. Khóa v7 được sắp xếp theo thời gian, giúp chỉ mục B-tree gọn và việc chèn dữ liệu nhanh. Hãy giữ v4 nếu thời điểm tạo nhúng trong ID v7 cần được giữ kín.
Dùng UUID làm token đặt lại mật khẩu có an toàn không?
UUID v4 từ bộ tạo an toàn có 122 bit ngẫu nhiên, đủ để không thể đoán được, nhưng nhiều thư viện có sẵn hàm tạo token chuyên dụng với thời hạn hết hạn rõ ràng. Không bao giờ dùng các phiên bản dựa trên thời gian như v1 hoặc v7 làm khóa bí mật.