Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Chương trình PHP tạo mật khẩu một lần (OTP) số

Ví dụ

<?php
function generate_otp($n) {
    $gen = "1357902468";
    $res = "";
    for ($i = 1; $i <= $n; $i++) {
        $res .= substr($gen, rand() % strlen($gen), 1);
    }
    return $res;
}
$num = 8;
print_r("The one time password generated is: ");
print_r(generate_otp($num));
?>

Kết quả

The one time password generated is: 52471609

Giải thích

Hàm generate_otp($n) tạo OTP số độ dài $n. Chuỗi $gen chứa các chữ số 0-9 (thứ tự xáo trộn). Vòng lặp $n lần, mỗi lần lấy 1 ký tự ngẫu nhiên từ $gen bằng substr($gen, rand() % strlen($gen), 1) và nối vào kết quả.

Vấn đề bảo mật: rand() KHÔNG an toàn mật mã (dự đoán được). Đối với OTP thực tế, phải dùng random_int(0, 9) hoặc random_bytes().

Phiên bản an toàn (PHP 7+):

function generate_otp_secure($n) {
    $res = '';
    for ($i = 0; $i < $n; $i++) {
        $res .= random_int(0, 9);
    }
    return $res;
}