Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menjana Rentetan Aksara Rawak dengan Panjang Tetap dengan Cekap?
Menjana Rentetan Watak Rawak Panjang Tetap
Anda berusaha untuk membangunkan kaedah untuk menghasilkan rentetan rawak 5 aksara dengan pendua yang minimum dengan cekap kebarangkalian. Pertimbangkan pendekatan berikut:
$rand = substr(md5(microtime()),rand(0,26),5);
Pendekatan ini menggunakan pencincangan MD5 dan mengembalikan 5 aksara daripada cincang yang dijana secara rawak rentetan.
$seed = str_split('abcdefghijklmnopqrstuvwxyz' .'ABCDEFGHIJKLMNOPQRSTUVWXYZ' .'0123456789!@#$%^&*()'); shuffle($seed); // optional $rand = ''; foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];
Kaedah ini menjana tatasusunan aksara dan mengocoknya untuk rawak. Ia memilih 5 aksara dan menambahkannya pada rentetan.
function incrementalHash($len = 5){ $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $base = strlen($charset); $result = ''; $now = explode(' ', microtime())[1]; while ($now >= $base){ $i = (int)$now % $base; $result = $charset[$i] . $result; $now /= $base; } return substr(str_repeat($charset[0], $len) . $result, -$len); }
Pendekatan ini mengeksploitasi masa mikro untuk menjana rentetan cincang pseudo-rawak berdasarkan masa semasa. Ia menghasilkan nilai cincang yang berubah secara beransur-ansur. Ambil perhatian bahawa kaedah ini mungkin kurang selamat untuk data sensitif.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Rentetan Aksara Rawak dengan Panjang Tetap dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!