產生隨機、唯一的字母數字字符串
在各種應用程式中,例如帳戶驗證鏈接,生成由以下內容組成的唯一且隨機的字串至關重要數字和字母。以下是如何在 PHP 中實現此目的:
PHP 7
PHP 7 引入了 random_bytes($length) 函數來提供加密安全的偽隨機位元組。範例:
$bytes = random_bytes(20); var_dump(bin2hex($bytes));
這將產生以下輸出:
string(40) "5fe69c95ed70a9869d9f9af7d8400a6673bb9ce9"
PHP 5 (Outdated)
對於PHP 5,它是建議使用openssl_random_pseudo_bytes() 代替,它會產生加密安全令牌。一個簡單的解決方案:
bin2hex(openssl_random_pseudo_bytes($bytes))
更安全的方法
為了增強安全性,以下函數可以產生指定長度範圍內的隨機、唯一的字母數字字串:
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; }
這種方法將crypto_rand_secure($min, $max)作為直接替代rand() 或 mt_rand(),利用 openssl_random_pseudo_bytes 來保證隨機性。
以上是如何在 PHP 中產生安全的隨機字母數字字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!