Tạo Khóa Ngẫu Nhiên
Tạo mật khẩu, token, khóa mã hóa, WEP key, UUID, ID sắp xếp được (ULID, KSUID, CUID2, MongoDB ObjectId) và cặp khóa công khai/riêng tư ngẫu nhiên với độ an toàn mật mã — kèm UUID theo tên, bộ giải mã UUID, bộ giải mã Snowflake ID và máy tính xác suất trùng Nano ID. Mọi thứ được tạo ngay trong trình duyệt của bạn bằng Web Crypto API, nên khóa không bao giờ rời khỏi thiết bị.
Các bước sử dụng
- Đặt trường Số lượng (Quantity, 1-20) để chọn số giá trị tạo ra cho mỗi dòng, rồi nhấn Tạo tất cả (Generate All) để lấp đầy toàn bộ các thẻ cùng lúc.
- Với một loại cụ thể, dùng ô Độ dài (Length) của nó (danh sách preset có thể tìm kiếm hoặc ô nhập số, tối đa 4096) rồi nhấn biểu tượng tải lại trên dòng đó để tạo lại riêng giá trị ấy.
- Duyệt qua các thẻ theo nhóm — Mật khẩu (cơ bản, PIN, passphrase, mạnh), Token & API Keys (Base64/58/32, URL-safe, Nano ID, UUID v1/v4/v7, GUID), Khóa mã hóa, WEP Keys và Mạng & Định danh (địa chỉ MAC, license key).
- Nắn Nano ID theo ý bạn bằng thanh Bảng ký tự Nano ID ở đầu thẻ Token & API Keys: chọn An toàn cho URL (mặc định), Chữ và số, Chữ thường + số, Bỏ ký tự dễ nhầm, Thập lục phân, Base58 hoặc Chỉ chữ số, hoặc chọn Tùy chỉnh… rồi dán vào bảng ký tự riêng gồm 2–256 ký hiệu khác nhau. Thanh này cho biết bảng có bao nhiêu ký hiệu và độ dài hiện tại mang lại khoảng bao nhiêu bit entropy; nút Tạo mới chỉ tạo lại riêng dòng đó, còn Tải xuống lưu cả loạt thành file
nano-ids.txt. - Sao chép từng giá trị bằng biểu tượng copy, hoặc dùng Sao chép tất cả (Copy All) trên một thẻ để lấy toàn bộ khóa trong nhóm đó.
- Cần một UUID luôn giống nhau với cùng một đầu vào? Trong thẻ Công Cụ UUID, ở mục UUID theo tên (v3 / v5), chọn Namespace (DNS, URL, OID, X.500, hoặc UUID tự nhập… để dán namespace riêng), gõ Tên, rồi sao chép kết quả UUID v5 (SHA-1) hoặc UUID v3 (MD5).
- Dán một UUID bất kỳ vào mục Kiểm Tra & Giải Mã UUID để kiểm tra. Công cụ hiện dạng chuẩn, Phiên bản, Biến thể (variant), và với v1, v6, v7 thì hiện cả Thời điểm tạo (v1 và v6 còn có Clock sequence và Node).
- Với các định dạng ID khác, mở thẻ ID Sắp Xếp Được & Duy Nhất rồi chọn một tab. Ở ULID, KSUID, CUID2 và ObjectId, nhấn Tạo mới để sinh số ID đúng bằng giá trị Số lượng, rồi dán một ID bất kỳ vào ô bên dưới để giải mã dấu thời gian và các thành phần của nó (CUID2 chỉ được kiểm tra định dạng — xem phần câu hỏi). CUID2 còn có ô Độ dài riêng (2–32).
- Ở tab Snowflake, chọn Nền tảng — Discord, Twitter / X, hoặc Epoch tự nhập với mốc thời gian tính bằng mili giây Unix — rồi dán một ID để xem thời điểm tạo, các trường định danh máy và số thứ tự của nó.
- Ở tab Trùng lặp Nano ID, xem cấu hình Nano ID của bạn an toàn đến đâu: Số ký hiệu trong bảng và Độ dài ID lấy giá trị ban đầu từ thanh Nano ID phía trên, còn bạn nhập Số ID mỗi giờ và Số lượng ID. Công cụ cho biết có thể tạo bao nhiêu ID trước khi có 1% khả năng xuất hiện hai ID trùng nhau, mất bao lâu ở tốc độ đó, và xác suất trùng với số lượng bạn nhập.
- Để tạo cặp khóa, mở Tạo Cặp Khóa Mã Hóa, chọn thuật toán (RSA-OAEP/PSS, ECDSA, ECDH, Ed25519, AES, HMAC), có thể nhập mật khẩu để đồng thời xuất khóa riêng đã mã hóa, rồi nhấn Tạo mới (Generate) và Tải xuống (Download) theo định dạng bất kỳ (.pem, .der, .key, ...).
- Dùng Công Cụ Khóa để dán một khóa riêng vào ô Dán Private Key (PEM), chọn thuật toán của nó, nhấn Trích Public Key để xuất ra dạng PEM/Base64/Hex, hoặc dùng Mã hóa Private Key bằng mật khẩu.
Mẹo
- Chọn loại mật khẩu Strong (không nhập nhằng) khi khóa phải gõ bằng tay — nó loại bỏ các ký tự dễ nhầm như
0/Ovà1/l/I. - Loại passphrase tính độ dài theo số từ, còn loại license tính theo số đoạn (mỗi đoạn 5 ký tự), không phải theo ký tự thô — nên độ dài 5 nghĩa là 5 từ hoặc 5 đoạn.
- Thẻ Tạo Tùy Chỉnh cho phép kết hợp
a-z,A-Z,0-9và ký tự đặc biệt bằng các ô tích, hoặc chuyển sang chế độ Hex để xuất thuần hệ thập lục phân. - Thêm mật khẩu trong thẻ Tạo Cặp Khóa Mã Hóa sẽ bọc khóa riêng bằng AES-GCM (PBKDF2, 100.000 vòng lặp) để bạn lưu file
.pemđã mã hóa một cách an toàn. - Nano ID là lựa chọn hợp lý cho định danh lộ ra ngoài — slug trên URL, mã mời, khóa chính trong cơ sở dữ liệu. Nó ngắn hơn UUID ở cùng mức độ an toàn, và bảng ký tự mặc định vốn an toàn cho URL nên không phải escape gì cả.
- Độ dài Nano ID mặc định là 21 ký tự, với bảng An toàn cho URL (mặc định) thì mức chống trùng gần bằng UUID v4. Chỉ rút ngắn sau khi đã đọc con số bit entropy mà thanh công cụ hiển thị cho đúng độ dài và bảng ký tự bạn chọn.
- Chọn bảng Bỏ ký tự dễ nhầm khi mã sẽ được đọc thành tiếng hoặc gõ lại từ giấy, và Chỉ chữ số khi ô nhập nhận nó chỉ chấp nhận số.
- Bảng ký tự tự đặt sẽ bị loại bỏ ký tự trùng và khoảng trắng trước khi dùng — một ký tự lặp lại sẽ âm thầm tăng gấp đôi xác suất của chính nó — nên con số ký hiệu hiện trên thanh mới là số thực sự có hiệu lực.
- UUID theo tên hợp với định danh ổn định được suy ra từ thứ bạn đã có — tên miền, URL, địa chỉ email — để hai hệ thống tự tính ra cùng một ID mà không cần trao đổi với nhau. Chúng không bí mật: ai biết namespace và tên đều tính lại được.
- Bộ giải mã nhận UUID theo đúng kiểu người ta hay dán: chữ hoa, bọc trong
{ngoặc nhọn}, có tiền tốurn:uuid:, hoặc 32 chữ số hex liền nhau. - Với UUID v7, bộ giải mã còn kiểm tra thời điểm tạo: thời điểm nằm ở tương lai (đồng hồ lệch, hoặc không phải v7 thật) hay trước năm 2020 (khi định dạng này chưa ra đời) đều bị đánh dấu.
- ULID, KSUID và ObjectId đều bắt đầu bằng dấu thời gian, nên sắp xếp chúng như chuỗi thường cũng là sắp xếp theo thời điểm tạo — tiện cho khóa cơ sở dữ liệu cần giữ đúng thứ tự chèn. Mặt trái là ai có trong tay một ID cũng đọc được nó được tạo lúc nào.
- Giải mã Snowflake với sai nền tảng sẽ ra ngày lệch hàng năm trời. Nếu ngày trông vô lý, hãy thử nền tảng còn lại trước khi kết luận ID bị hỏng.
- Bộ giải mã ObjectId nhận cả dạng trong shell
ObjectId("507f1f77bcf86cd799439011")lẫn 24 chữ số hex trơn.
Câu hỏi thường gặp
Khi nào nên dùng Nano ID thay cho UUID?
Dùng UUID khi một thứ khác đòi đúng định dạng UUID — kiểu cột trong cơ sở dữ liệu, hợp đồng API, hay thứ tự theo thời gian của v7. Dùng Nano ID khi giá trị đó là do bạn tự định nghĩa và bạn muốn nó ngắn gọn, an toàn cho URL. Cả hai đều lấy số ngẫu nhiên từ cùng một nguồn an toàn mật mã tại đây.
Hỗ trợ những phiên bản UUID nào?
Thẻ Token & API Keys tạo UUID v1 (dựa trên thời gian), v4 (ngẫu nhiên), v7 (timestamp + ngẫu nhiên, có thể sắp xếp), UUID nil và biến thể GUID viết hoa. Thẻ Công Cụ UUID bổ sung UUID v3 và v5 dựa trên tên. Bộ giải mã nhận ra mọi phiên bản từ v1 đến v8 cùng UUID nil và max, đồng thời phân biệt biến thể RFC 9562 với các biến thể cũ của NCS và Microsoft.
Vì sao UUID v5 của tôi không khớp với công cụ khác?
Hãy kiểm tra hai bên có dùng cùng namespace và đúng từng byte của tên hay không — thừa một khoảng trắng hay khác chữ hoa/thường là ra UUID khác. Namespace phải được băm dưới dạng 16 byte thô chứ không phải dạng chuỗi; công cụ này khớp với ví dụ trong RFC 9562 (DNS + www.example.com = 2ed6657d-e927-568b-95e1-2665a8aea6a2) và với uuid.uuid5 của Python.
Nên chọn ULID, KSUID hay UUID v7 làm ID sắp xếp được?
Chúng giải cùng một bài toán. UUID v7 hợp với mọi nơi vốn đã lưu UUID (cột kiểu uuid, hợp đồng API). ULID cùng ý tưởng nhưng viết thành 26 ký tự Crockford Base32, chính xác đến mili giây. KSUID dài hơn (27 ký tự) và chỉ chính xác đến giây nhưng có 128 bit ngẫu nhiên, nên an toàn nhất trước nguy cơ trùng ở hệ thống có lưu lượng rất lớn. ObjectId là định dạng MongoDB dùng mặc định.
Vì sao không giải mã được CUID2?
Vì CUID2 là một hash. Nó đưa thời gian, bộ đếm, dấu vân tay máy và chuỗi muối ngẫu nhiên qua SHA3-512 rồi giữ lại một phần kết quả, chính là để ID không tiết lộ gì về thời điểm hay nơi tạo ra nó. Công cụ chỉ kiểm tra được giá trị có đúng hình dạng CUID2 hay không: một chữ cái thường, theo sau là chữ thường và chữ số, dài 2–32 ký tự.
Máy tính trùng lặp Nano ID thực chất đo cái gì?
Bài toán ngày sinh: khả năng có ít nhất hai ID bạn tạo ra trùng nhau. Nó không liên quan đến việc đoán — kẻ tấn công muốn đoán trúng một ID cụ thể phải đối mặt với toàn bộ entropy. Với 21 ký tự URL-safe mặc định, bạn cần khoảng 1,3 × 10¹⁸ ID mới có 1% khả năng trùng, tức khoảng 149 tỷ năm nếu tạo 1.000 ID mỗi giờ.
Những khóa này có an toàn để dùng cho môi trường production không?
Có — giá trị ngẫu nhiên đến từ bộ sinh an toàn mật mã của trình duyệt, và cặp khóa được tạo bằng các thuật toán Web Crypto tiêu chuẩn (RSA đến 4096-bit, ECDSA P-256/384/521, Ed25519, AES-128/192/256, HMAC-SHA256/384/512). HMAC-SHA1 được đánh dấu cảnh báo vì SHA-1 đã lỗi thời.
Tôi có thể dùng lại khóa riêng đã có sẵn không?
Được. Dán nó vào Công Cụ Khóa, chọn thuật toán tương ứng và nhấn Trích Public Key để khôi phục khóa công khai và xuất cả hai khóa dưới dạng PEM, Base64 hoặc Hex. Bạn cũng có thể mã hóa nó bằng mật khẩu ngay tại đó.