首頁 > 後端開發 > php教程 > 如何在 PHP 中產生安全的隨機字母數字字串?

如何在 PHP 中產生安全的隨機字母數字字串?

DDD
發布: 2025-01-01 06:15:11
原創
748 人瀏覽過

How Can I Generate Secure Random Alphanumeric Strings in PHP?

產生隨機、唯一的字母數字字符串

在各種應用程式中,例如帳戶驗證鏈接,生成由以下內容組成的唯一且隨機的字串至關重要數字和字母。以下是如何在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板