Trình Tạo Mã PIN Ngẫu Nhiên là gì?
Công cụ này tạo ra một mã PIN ngẫu nhiên (Personal Identification Number — số nhận dạng cá nhân) — một chuỗi chữ số dùng cho thẻ ATM, ngân hàng trực tuyến, khóa điện thoại và nhiều loại mã bảo mật đăng nhập khác. Bạn chỉ cần chọn số lượng chữ số mong muốn (từ 1 đến 100) và quyết định xem một chữ số có được phép xuất hiện nhiều lần hay không. Mỗi lần nhấn tạo, bạn sẽ nhận được một mã hoàn toàn mới.
Cách sử dụng
Nhập số chữ số bạn cần vào ô "Tạo mã PIN có số chữ số là" (phổ biến nhất là 4 và 6 chữ số). Giữ tùy chọn "Cho phép số trùng lặp" được tích để cho phép các chữ số lặp lại (đây là thiết lập thông thường), hoặc bỏ tích nếu muốn mỗi chữ số đều khác nhau. Nhấn tính toán để nhận mã của bạn. Vì kết quả là một chuỗi chữ số nên các số 0 ở đầu vẫn được giữ nguyên — "036784" là một mã PIN 6 chữ số hoàn toàn hợp lệ.
Giải thích công thức
Khi cho phép trùng lặp, mỗi vị trí được điền bằng một lần bốc ngẫu nhiên độc lập theo phân phối đều: \(d = \lfloor \text{rand()} \times 10 \rfloor\), trong đó rand() trả về giá trị trong khoảng \([0,1)\). Nhờ vậy, mỗi chữ số từ 0 đến 9 đều có xác suất bằng nhau là \(\frac{1}{10}\), và tổng cộng có $$N_{\text{possible}} = 10^{\,\text{PIN Length}}$$ mã PIN có thể tạo ra. Khi không cho phép trùng lặp, mười chữ số [0-9] được xáo trộn bằng thuật toán Fisher-Yates rồi lấy N chữ số đầu tiên, nên tất cả chữ số đều khác nhau; lúc này số khả năng là số chỉnh hợp $$N_{\text{possible}} = \frac{10!}{\left(10 - \text{PIN Length}\right)!}.$$ Vì chỉ có đúng mười chữ số khác nhau, một mã PIN không trùng lặp tối đa chỉ dài 10 chữ số — với độ dài lớn hơn, công cụ sẽ tự động cho phép trùng lặp.
Ví dụ minh họa
Với độ dài 6 và cho phép trùng lặp, giả sử các giá trị ngẫu nhiên là 0.36, 0.61, 0.38, 0.74, 0.85, 0.42. Nhân mỗi giá trị với 10 rồi lấy phần nguyên ta được \(3, 6, 3, 7, 8, 4\), vậy mã PIN là "363784" — lưu ý chữ số 3 xuất hiện hai lần, điều này được phép. Với độ dài 4 và không cho phép trùng lặp, một lần xáo trộn [0-9] có thể bắt đầu bằng \([7,2,9,0,\ldots]\); lấy bốn chữ số đầu sẽ cho ra "7290", tất cả đều khác nhau.
Câu hỏi thường gặp
Mã PIN có thể bắt đầu bằng số 0 không? Có. Kết quả được xử lý dưới dạng văn bản nên các số 0 ở đầu luôn được giữ nguyên, không bao giờ bị lược bỏ.
Tại sao tôi không thể tạo mã PIN 12 chữ số không trùng lặp? Vì chỉ có đúng mười chữ số khác nhau (0-9). Bất kỳ mã PIN nào dài hơn mười chữ số đều buộc phải dùng lại chữ số, nên công cụ sẽ tự động chuyển sang chế độ cho phép trùng lặp.
Mã này có đủ an toàn cho tài khoản thực tế không? Công cụ sử dụng bộ tạo số giả ngẫu nhiên thông thường, không có bảo đảm về mặt mã hóa. Nó rất tiện lợi cho nhu cầu hằng ngày, nhưng với các khóa đòi hỏi bảo mật cao, bạn nên dùng công cụ mã hóa chuyên dụng.