Trình tạo NanoID ngẫu nhiên
Tạo các NanoID an toàn về mặt mật mã - giải pháp thay thế hiện đại, nhỏ gọn cho UUID. Có các bảng chữ cái có thể tùy chỉnh (an toàn cho URL, thập lục phân, chữ số, không có ký tự dễ nhầm lẫn), độ dài có thể điều chỉnh (8-64 ký tự), máy tính xác suất va chạm, tạo hàng loạt và sao chép bằng một cú nhấp chuột. Hoàn hảo cho các nhà phát triển xây dựng cơ sở dữ liệu, API, trình rút gọn URL và hệ thống phân tán.
Trình chặn quảng cáo đang ngăn chúng tôi hiển thị quảng cáo
MiniWebtool miễn phí nhờ quảng cáo. Nếu công cụ này hữu ích, hãy ủng hộ bằng Premium (không quảng cáo + nhanh hơn) hoặc cho phép MiniWebtool.com rồi tải lại trang.
- Hoặc nâng cấp Premium (không quảng cáo)
- Cho phép quảng cáo cho MiniWebtool.com, rồi tải lại
Giới thiệu về Trình tạo NanoID ngẫu nhiên
Chào mừng bạn đến với Trình tạo NanoID ngẫu nhiên, một công cụ trực tuyến mạnh mẽ để tạo các mã định danh chuỗi duy nhất an toàn, thân thiện với URL. NanoID là một giải pháp thay thế hiện đại, nhẹ cho UUID (Universally Unique Identifiers), cung cấp các ID ngắn hơn với khả năng chống va chạm tương đương. Cho dù bạn đang xây dựng API, cơ sở dữ liệu, trình rút gọn URL hay hệ thống phân tán, trình tạo này đều cung cấp các ID an toàn về mặt mật mã với bảng chữ cái có thể tùy chỉnh, độ dài có thể điều chỉnh và phân tích xác suất va chạm trong thời gian thực.
NanoID là gì?
NanoID là một trình tạo ID chuỗi duy nhất nhỏ gọn, an toàn, thân thiện với URL ban đầu được tạo cho JavaScript bởi Andrey Sitnik. Kể từ đó, nó đã được chuyển sang mọi ngôn ngữ lập trình chính. Cải tiến chính của NanoID là sử dụng bảng chữ cái lớn hơn (mặc định là 64 ký tự) thay vì 16 chữ số thập lục phân của UUID, nghĩa là có nhiều entropy hơn trên mỗi ký tự và ID ngắn hơn.
Một NanoID mặc định trông như thế nào: V1StGXR8_Z5jdHi6B-myT
So sánh NanoID và UUID
| Tính năng | NanoID | UUID v4 |
|---|---|---|
| Độ dài mặc định | 21 ký tự | 36 ký tự (có dấu gạch ngang) |
| Kích thước bảng chữ cái | 64 ký tự (A-Za-z0-9_-) | 16 ký tự (0-9a-f) |
| Entropy | ~126 bit (21 ký tự) | ~122 bit (32 chữ số hex) |
| An toàn cho URL | ✓ Không cần mã hóa | ✗ Dấu gạch ngang cần mã hóa trong một số ngữ cảnh |
| Có thể tùy chỉnh | ✓ Bảng chữ cái và độ dài | ✗ Định dạng cố định (8-4-4-4-12) |
| Hiệu quả về kích thước | ✓ 6 bit mỗi ký tự | ✗ 4 bit mỗi ký tự |
| Định dạng | Chuỗi nhỏ gọn | xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx |
Cách công cụ này tạo ra các NanoID an toàn
Tính ngẫu nhiên của mật mã
Trình tạo này sử dụng mô-đun secrets của Python ở phía máy chủ, cung cấp tính năng tạo số ngẫu nhiên an toàn về mặt mật mã được hỗ trợ bởi nguồn entropy của hệ điều hành (/dev/urandom trên Linux/macOS, CryptGenRandom trên Windows). Mỗi ký tự trong NanoID được lựa chọn một cách độc lập và không thể dự đoán được từ bảng chữ cái đã chọn.
Cài đặt sẵn bảng chữ cái
Chúng tôi cung cấp 9 bảng chữ cái được tuyển chọn kỹ lưỡng để phù hợp với các trường hợp sử dụng khác nhau:
- Mặc định NanoID (64 ký tự): Bảng chữ cái NanoID tiêu chuẩn
A-Za-z0-9_-. An toàn cho URL, nhỏ gọn và tương thích rộng rãi. 6 bit entropy mỗi ký tự. - Chữ và số (62 ký tự): Chỉ gồm chữ cái và chữ số, không có ký tự đặc biệt. An toàn cho tên tệp, trường cơ sở dữ liệu và các ngữ cảnh mà ký hiệu gây ra sự cố.
- Thập lục phân (16 ký tự): Định dạng hex truyền thống. Hữu ích khi ID cần tích hợp với các hệ thống dựa trên hex như màu CSS hoặc bản tóm tắt băm.
- Chỉ số (10 ký tự): Chỉ gồm các ID số. Tốt cho số đơn hàng, mã tham chiếu hoặc các hệ thống chỉ chấp nhận chữ số.
- Chữ thường / Chữ hoa (26 ký tự): Bảng chữ cái một trường hợp cho các hệ thống không phân biệt chữ hoa chữ thường hoặc để thống nhất về mặt trực quan.
- Không ký tự dễ nhầm lẫn (57 ký tự): Loại bỏ các ký tự dễ bị nhầm lẫn trong nhiều phông chữ (1/l/I, 0/O/o). Lý tưởng cho các mã mà con người có thể đọc được như liên kết mời, số xác nhận và bất kỳ thứ gì người dùng cần nhập thủ công.
- An toàn cho URL (66 ký tự): Bảng chữ cái mở rộng với
-._~theo các ký tự không được bảo vệ RFC 3986. - Bảng chữ cái tùy chỉnh: Xác định bộ ký tự của riêng bạn. Các ký tự trùng lặp sẽ được tự động loại bỏ.
Giải thích về xác suất va chạm
Xác suất va chạm đo lường khả năng hai ID được tạo độc lập giống hệt nhau. Điều này được điều chỉnh bởi bài toán ngày sinh trong lý thuyết xác suất:
- Tổng số ID có thể có: alphabet_size ^ id_length. Đối với NanoID mặc định: 64^21 = ~2^126
- Đối với n ID được tạo: xác suất va chạm ~ n^2 / (2 * tổng_số_có_thể)
- Với 1.000 ID: xác suất cực kỳ nhỏ (~10^-33)
- Để đạt tỷ lệ va chạm 1% với cài đặt mặc định: bạn sẽ cần ~10^18 ID (một tỷ tỷ)
Máy tính xác suất va chạm trên trang này hiển thị phân tích thời gian thực dựa trên bảng chữ cái và độ dài ID bạn đã chọn, giúp bạn đưa ra quyết định sáng suốt về cấu hình ID cho quy mô cụ thể của mình.
Cách sử dụng trình tạo NanoID
- Chọn một bảng chữ cái cài đặt sẵn: Chọn từ 9 cài đặt sẵn hoặc xác định bảng chữ cái tùy chỉnh. Xem trước bảng chữ cái sẽ hiển thị các ký tự chính xác sẽ được sử dụng.
- Đặt độ dài ID: Chọn từ 8 đến 64 ký tự. Mặc định là 21, mang lại entropy khoảng 126 bit với bảng chữ cái tiêu chuẩn.
- Cấu hình cài đặt tùy chọn: Thêm tiền tố cho ID theo không gian tên (ví dụ: "usr_", "doc_") và chọn số lượng (1-50).
- Tạo và sao chép: Nhấp vào "Tạo NanoID" để tạo các ID của bạn. Sử dụng tính năng sao chép bằng một cú nhấp chuột cho từng ID hoặc sao chép tất cả cùng một lúc.
Các trường hợp sử dụng cho NanoID
Khóa chính của cơ sở dữ liệu
NanoID làm khóa chính tuyệt vời cho cơ sở dữ liệu. Chúng ngắn hơn UUID (21 so với 36 ký tự), tiết kiệm không gian lưu trữ và giảm kích thước chỉ mục. Sử dụng tiền tố như "usr_" hoặc "ord_" để làm cho ID tự mô tả.
Mã định danh tài nguyên API
NanoID an toàn cho URL theo mặc định, khiến chúng trở nên lý tưởng cho các điểm cuối REST API: /api/users/V1StGXR8_Z5jdHi6B-myT. Không cần mã hóa URL và chúng trông sạch sẽ trong nhật ký và URL.
Trình rút gọn URL
Một NanoID 10 ký tự với bảng chữ cái mặc định cho phép 64^10 = ~10^18 tổ hợp có thể có - đủ cho bất kỳ trình rút gọn URL nào. Bảng chữ cái không ký tự dễ nhầm lẫn đặc biệt hữu ích ở đây vì người dùng có thể cần nhập URL rút gọn theo cách thủ công.
Token phiên và Token CSRF
Vì công cụ này sử dụng tính ngẫu nhiên về mặt mật mã, các ID được tạo phù hợp cho các token bảo mật. Sử dụng độ dài dài hơn (32-64 ký tự) cho các ứng dụng bảo mật nhạy cảm.
Hệ thống phân tán
NanoID có thể được tạo độc lập trên nhiều máy chủ mà không cần sự phối hợp, không giống như các số nguyên tự động tăng. Xác suất va chạm là không đáng kể ngay cả ở quy mô lớn.
Đặt tên tệp
Sử dụng cài đặt sẵn Chữ và số để đặt tên tệp an toàn trên tất cả các hệ điều hành. Không có ký tự đặc biệt có nghĩa là không có vấn đề thoát ký tự trên Windows, macOS hoặc Linux.
Chọn độ dài phù hợp
| Độ dài | Entropy (64 ký tự) | Phù hợp nhất cho | Ngưỡng va chạm 1% |
|---|---|---|---|
| 8 | 48 bit | URL ngắn, tập dữ liệu nhỏ | ~16 triệu ID |
| 12 | 72 bit | Mục đích chung, tập dữ liệu trung bình | ~68 tỷ ID |
| 16 | 96 bit | Hệ thống lớn, thông lượng cao | ~280 nghìn tỷ ID |
| 21 | 126 bit | Mặc định, hầu hết các ứng dụng | ~10^18 ID |
| 32 | 192 bit | Token bảo mật, cực kỳ an toàn | ~10^28 ID |
| 64 | 384 bit | Bảo mật tối đa | ~10^57 ID |
Ví dụ về mã
JavaScript (sử dụng gói nanoid)
// Mặc định: 21 ký tự, bảng chữ cái an toàn cho URL
const id = nanoid(); // "V1StGXR8_Z5jdHi6B-myT"
// Độ dài tùy chỉnh
const shortId = nanoid(10); // "IRFa-VaY2b"
// Bảng chữ cái tùy chỉnh
import { customAlphabet } from 'nanoid';
const hexId = customAlphabet('0123456789abcdef', 12);
Python (sử dụng gói nanoid)
# Mặc định NanoID
id = generate() # "V1StGXR8_Z5jdHi6B-myT"
#Độ dài và bảng chữ cái tùy chỉnh
id = generate('0123456789abcdef', 12)
Câu hỏi thường gặp
NanoID là gì và nó khác với UUID như thế nào?
NanoID là một trình tạo ID chuỗi duy nhất nhỏ gọn, an toàn và thân thiện với URL. Nó có độ dài mặc định là 21 ký tự (so với 36 ký tự của UUID), sử dụng bảng chữ cái lớn hơn (A-Za-z0-9_-) để có nhiều entropy hơn trên mỗi ký tự, an toàn cho URL mà không cần mã hóa và không có định dạng cố định hoặc dấu gạch ngang. NanoID đạt được khả năng chống va chạm tương tự như UUID v4 trong ít ký tự hơn vì nó sử dụng 64 ký hiệu thay vì 16 chữ số thập lục phân.
Các NanoID được tạo bởi công cụ này an toàn đến mức nào?
Công cụ này sử dụng mô-đun secrets của Python, cung cấp tính năng tạo số ngẫu nhiên an toàn về mặt mật mã được hỗ trợ bởi nguồn entropy của hệ điều hành. Mỗi ký tự được lựa chọn một cách độc lập và không thể dự đoán được. Một NanoID 21 ký tự mặc định với bảng chữ cái tiêu chuẩn có entropy khoảng 126 bit, tương đương với khoảng 122 bit của UUID v4.
Tôi nên sử dụng độ dài NanoID nào cho dự án của mình?
Độ dài mặc định là 21 ký tự cung cấp entropy khoảng 126 bit với bảng chữ cái tiêu chuẩn, đủ cho hầu hết các ứng dụng. Đối với trình rút gọn URL hoặc ID hướng tới người dùng, 8-12 ký tự có thể là đủ tùy thuộc vào tổng số lượng ID của bạn. Đối với các hệ thống phân tán tạo ra hàng triệu ID, 21+ ký tự đảm bảo xác suất va chạm không đáng kể. Sử dụng máy tính xác suất va chạm để tìm độ dài phù hợp cho trường hợp sử dụng cụ thể của bạn.
Tôi có thể sử dụng NanoID làm khóa chính trong cơ sở dữ liệu không?
Có, NanoID hoạt động tốt dưới dạng khóa chính của cơ sở dữ liệu. Chúng nhỏ gọn (21 ký tự so với 36 của UUID), an toàn cho URL và có khả năng chống va chạm tuyệt vời. Tuy nhiên, không giống như các số nguyên tự động tăng, chúng không theo thứ tự - vì vậy nếu cơ sở dữ liệu của bạn sử dụng chỉ mục B-tree, các ID ngẫu nhiên có thể gây ra nhiều lần phân tách trang hơn. Cân nhắc sử dụng tiền tố (như 'usr_' hoặc 'ord_') để làm cho ID tự mô tả.
Cài đặt bảng chữ cái "Không ký tự dễ nhầm lẫn" là gì?
Cài đặt Không ký tự dễ nhầm lẫn (No-Lookalike) loại bỏ các ký tự trông giống nhau trong nhiều phông chữ: 1/l/I (số một, chữ l thường, chữ I hoa) và 0/O/o (số không, chữ O hoa, chữ o thường). Điều này làm cho ID dễ đọc, dễ ghi chép và truyền đạt bằng miệng hơn nhiều. Nó lý tưởng cho các ID hướng tới người dùng như mã mời, số xác nhận hoặc bất kỳ ID nào mà con người cần nhập thủ công.
Tài nguyên bổ sung
Tham khảo nội dung, trang hoặc công cụ này như sau:
"Trình tạo NanoID ngẫu nhiên" tại https://MiniWebtool.com/vi// từ MiniWebtool, https://MiniWebtool.com/
bởi miniwebtool team. Cập nhật: 07/02/2026