Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menjana Rentetan Alfanumerik Rawak Selamat dalam PHP?

Bagaimanakah Saya Boleh Menjana Rentetan Alfanumerik Rawak Selamat dalam PHP?

DDD
DDDasal
2025-01-01 06:15:11784semak imbas

How Can I Generate Secure Random Alphanumeric Strings in PHP?

Menjana Rentetan Abjad Angka Unik Secara Rawak

Dalam pelbagai aplikasi, seperti pautan pengesahan akaun, adalah penting untuk menjana rentetan unik dan rawak yang terdiri daripada nombor dan huruf. Begini cara anda boleh mencapai ini dalam PHP:

PHP 7

PHP 7 memperkenalkan fungsi random_bytes($length) untuk menyediakan bait pseudo-rawak yang selamat secara kriptografi. Contoh:

$bytes = random_bytes(20);
var_dump(bin2hex($bytes));

Ini akan menghasilkan output seperti:

string(40) "5fe69c95ed70a9869d9f9af7d8400a6673bb9ce9"

PHP 5 (Lapuk)

Untuk PHP 5, ia adalah disyorkan untuk menggunakan openssl_random_pseudo_bytes() sebaliknya, yang menjana token selamat dari segi kriptografi. Penyelesaian mudah:

bin2hex(openssl_random_pseudo_bytes($bytes))

Pendekatan Lebih Selamat

Untuk meningkatkan keselamatan, fungsi berikut boleh menjana rentetan abjad angka unik secara rawak dalam julat panjang yang ditentukan:

function getToken($length)
{
    $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    $max = strlen($codeAlphabet); // edited

    for ($i=0; $i < $length; $i++) {
        $token .= $codeAlphabet[crypto_rand_secure(0, $max-1)];
    }

    return $token;
}

Pendekatan ini menggabungkan crypto_rand_secure($min, $max) sebagai pengganti drop-in untuk rand() atau mt_rand(), menggunakan openssl_random_pseudo_bytes untuk menjamin rawak.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Rentetan Alfanumerik Rawak Selamat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn