生成随机、唯一的字母数字字符串
在各种应用程序中,例如帐户验证链接,生成由以下内容组成的唯一且随机的字符串至关重要数字和字母。以下是如何在 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中文网其他相关文章!