Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menjana Rentetan Alfanumerik yang Selamat dan Unik dalam PHP untuk Pengesahan?

Bagaimana untuk Menjana Rentetan Alfanumerik yang Selamat dan Unik dalam PHP untuk Pengesahan?

Barbara Streisand
Lepaskan: 2024-12-29 13:37:11
asal
640 orang telah melayarinya

How to Generate Secure and Unique Alphanumeric Strings in PHP for Verification?

Menjana Rentetan Abjad Angka Unik untuk Pengesahan

Dalam aplikasi web, adalah perkara biasa untuk menghantar pautan pengesahan kepada pengguna. Pautan ini biasanya mengandungi rentetan unik untuk mengenal pasti pengguna dan mengesahkan akaun mereka. Menjana rentetan sedemikian memerlukan pendekatan rawak dan selamat.

PHP menyediakan beberapa kaedah untuk menjana rentetan rawak. Satu pilihan selamat ialah menggunakan fungsi random_bytes(), tersedia dalam PHP 7 dan lebih baru. Fungsi ini menjana bait pseudo-rawak yang selamat secara kriptografi. Contohnya:

$bytes = random_bytes(20);
$string = bin2hex($bytes);
Salin selepas log masuk

Ini akan menjana rentetan alfanumerik 40 aksara.

Dalam versi PHP yang lebih lama, fungsi openssl_random_pseudo_bytes() boleh digunakan sebaliknya. Ia juga menjana bait pseudo-rawak yang selamat secara kriptografi.

$bytes = openssl_random_pseudo_bytes(20);
$string = bin2hex($bytes);
Salin selepas log masuk

Pendekatan lain ialah menggunakan fungsi uniqid(). Walaupun ia digunakan terutamanya untuk menjana pengecam unik, ia juga boleh digunakan untuk mencipta rentetan rawak:

$string = uniqid('', true);
Salin selepas log masuk

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa uniqid() tidak selamat dari segi kriptografi dan tidak boleh digunakan untuk sensitif tujuan.

Untuk aplikasi yang memerlukan tahap keselamatan yang tinggi, fungsi tersuai boleh dilaksanakan untuk menjana kuat dari segi kriptografi rentetan:

function crypto_rand_secure($min, $max) {
    $range = $max - $min;
    if ($range < 1) return $min;
    $log = ceil(log($range, 2));
    $bytes = (int) ($log / 8) + 1;
    $bits = (int) $log + 1;
    $filter = (int) (1 << $bits) - 1;
    do {
        $rnd = hexdec(bin2hex(openssl_random_pseudo_bytes($bytes)));
        $rnd = $rnd & $filter;
    } while ($rnd > $range);
    return $min + $rnd;
}

function getToken($length) {
    $token = "";
    $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    $max = strlen($codeAlphabet) - 1;

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

    return $token;
}
Salin selepas log masuk

Fungsi crypto_rand_secure() menjana nombor rawak dalam julat yang ditentukan. Fungsi getToken() mencipta token dengan panjang tertentu menggunakan abjad aksara abjad angka.

Dengan menggunakan teknik ini, anda boleh menjana rentetan abjad angka yang selamat dan unik untuk pelbagai tujuan pengesahan dalam PHP.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Rentetan Alfanumerik yang Selamat dan Unik dalam PHP untuk Pengesahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan