🌐 VI

🎲 Trình tạo văn bản ngẫu nhiên

Công cụ tạo UUID, chuỗi ngẫu nhiên, khóa bảo mật, v.v. Hữu ích cho API key, mật khẩu tạm thời, tạo token, và tạo số ngẫu nhiên theo cách an toàn bằng mật mã.

Kết quả
※ UUID là một định danh duy nhất toàn cục với xác suất trùng lặp cực kỳ thấp.
※ Số ngẫu nhiên được tạo ra theo cách an toàn bằng mật mã.
※ Có thể dùng cho API key, mật khẩu tạm thời, token, v.v.
HƯỚNG DẪN

Tìm hiểu thêm

01

1. Tầm quan trọng của số ngẫu nhiên và CSPRNG

Số ngẫu nhiên là các giá trị không thể đoán trước, thiết yếu cho mã hóa, bảo mật, trò chơi và mô phỏng. Các bộ sinh ngẫu nhiên tiêu chuẩn tạo ra số giả ngẫu nhiên bằng thuật toán, nên có thể bị đoán nếu biết giá trị hạt giống. Với các ứng dụng yêu cầu bảo mật, hãy dùng CSPRNG (Cryptographically Secure Pseudo-Random Number Generator). Hàm random_bytes() và random_int() của PHP là CSPRNG, sử dụng /dev/urandom hoặc CryptGenRandom. JavaScript cung cấp crypto.getRandomValues() tận dụng các nguồn entropy của trình duyệt. Math.random() thông thường không phù hợp cho mục đích bảo mật và tuyệt đối không nên dùng cho token, session ID hoặc khóa mã hóa.

02

2. UUID và định danh duy nhất

UUID (Universally Unique Identifier) là định danh duy nhất 128-bit với xác suất va chạm cực kỳ thấp. UUID v4 hoàn toàn ngẫu nhiên và được dùng phổ biến nhất. Định dạng là xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx, trong đó 4 biểu thị phiên bản và y biểu thị biến thể. UUID v1 dựa trên thời gian và địa chỉ MAC, cho phép sắp xếp theo thứ tự thời gian nhưng lộ địa chỉ MAC, gây lo ngại về bảo mật. UUID v7 là phiên bản mới nhất, dựa trên thời gian nhưng không tiết lộ thông tin cá nhân. Dùng UUID cho khóa chính cơ sở dữ liệu, tên tệp, session ID và hệ thống phân tán giúp đảm bảo tính duy nhất mà không cần điều phối trung tâm.

03

3. Tạo khóa bảo mật và token

API key, token xác thực và session ID phải có đủ entropy. Khuyến nghị tối thiểu 128 bit (16 byte), và 256 bit (32 byte) sẽ an toàn hơn. Mã hóa Base64 chuyển đổi thành chuỗi an toàn cho URL. JWT (JSON Web Token) gồm Header, Payload, Signature và chứa thông tin ngay trong chính token. CSRF token ngăn tấn công giả mạo yêu cầu liên trang bằng cách đưa token duy nhất vào mỗi biểu mẫu. Tham số state của OAuth 2.0 cũng là một giá trị ngẫu nhiên để ngăn CSRF. Token nên dùng một lần (nonce) hoặc có thời hạn hết hạn để tránh tấn công phát lại.

04

4. Triển khai bộ sinh ngẫu nhiên bằng mật mã

Hệ điều hành thu thập entropy từ nhiễu phần cứng, thời gian bàn phím/chuột, gói mạng, v.v. Linux cung cấp /dev/random (chặn) và /dev/urandom (không chặn). /dev/random sẽ chờ khi entropy không đủ, gây bất tiện trong môi trường máy chủ. Nhân hệ điều hành hiện đại khuyến nghị syscall getrandom(). Windows dùng CryptGenRandom (cũ) hoặc BCryptGenRandom (hiện đại). Phần cứng tạo số ngẫu nhiên (HRNG) tận dụng lệnh Intel RDRAND hoặc chip TPM để tạo độ ngẫu nhiên thực sự. Môi trường cloud có thể thiếu entropy do ảo hóa, nên dùng các daemon như haveged.

05

5. Số ngẫu nhiên trong blockchain và hợp đồng thông minh

Blockchain là môi trường tất định nên việc tạo ngẫu nhiên rất khó. Tất cả các node phải xác minh cùng một kết quả, vì vậy không thể dùng số ngẫu nhiên thông thường. Dùng hash của block làm nguồn ngẫu nhiên có thể bị thợ đào thao túng. Chainlink VRF (Verifiable Random Function) cung cấp tính ngẫu nhiên có thể kiểm chứng cho các xổ số on-chain và việc mint NFT. Cơ chế Commit-Reveal yêu cầu người tham gia gửi hash trước (commit), rồi tiết lộ dữ liệu gốc sau (reveal) để ngăn thao túng. Random Beacon là dịch vụ ngẫu nhiên công khai do NIST hoặc dự án drand cung cấp. Trò chơi bằng hợp đồng thông minh cần nguồn ngẫu nhiên đáng tin cậy.

06

6. Ứng dụng thực tế của bộ sinh ngẫu nhiên

Các bộ tạo ngẫu nhiên trực tuyến phục vụ nhiều mục đích. Việc cấp API key cần độ dài đủ lớn (từ 32 ký tự trở lên) và có độ phức tạp cao. Mật khẩu tạm thời kết hợp số+chữ+ký tự đặc biệt và được đặt dùng một lần. Mã coupon ưu tiên tổ hợp chữ in hoa+số thân thiện với người dùng (ví dụ: AB12-CD34-EF56). Mã mời dùng 6-8 ký tự ngắn, dễ nhớ. Kết hợp dấu thời gian+ngẫu nhiên giúp tránh trùng tên tệp. Dùng UUID làm khóa phân mảnh cơ sở dữ liệu giúp khắc phục hạn chế của ID tự tăng. Phân bổ nhóm cho thử nghiệm A/B đảm bảo công bằng nhờ tính ngẫu nhiên. Luôn chọn bộ sinh ngẫu nhiên phù hợp với yêu cầu bảo mật.

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

UUID khác gì với một chuỗi ngẫu nhiên thông thường?
UUID là một định danh 128-bit chuẩn hóa theo định dạng 8-4-4-4-12 với xác suất trùng lặp cực thấp, rất phù hợp làm khóa cơ sở dữ liệu. Chuỗi ngẫu nhiên thông thường cho phép bạn tự do chọn độ dài và bộ ký tự (chữ và số, chỉ số, thập lục phân), nên phù hợp hơn cho mật khẩu tạm thời hoặc mã coupon.
Các giá trị ngẫu nhiên được tạo ra an toàn đến mức nào?
Công cụ này dùng cơ chế tạo ngẫu nhiên an toàn bằng mật mã của trình duyệt (CSPRNG), khó đoán hơn nhiều so với Math.random() thông thường. Vì vậy nó phù hợp cho các mục đích nhạy cảm về bảo mật như API key hoặc token xác thực.
Tôi có thể tạo độ dài tối đa bao nhiêu?
Bạn có thể chỉ định bất kỳ độ dài nào từ 1 đến 256 ký tự, đáp ứng từ mã mời ngắn đến token bảo mật dài.
Tôi có thể dùng các giá trị được tạo ra cho việc gì?
Các用途 phổ biến gồm API key, mật khẩu tạm thời, token phiên, mã coupon và định danh duy nhất để tránh trùng tên tệp.
UUID hoặc chuỗi ngẫu nhiên được tạo ra có được lưu trên máy chủ không?
Không, mọi quá trình tạo đều diễn ra trong trình duyệt của bạn và không có gì được gửi lên hay lưu trữ trên máy chủ.