首先,你想如何使用随机字符串,你想用它们做什么?如果它是为密码生成盐,您可以使用此函数生成比uniqid()或mt_rand()生成的更好的随机字符串.请参阅安全密码散列,并参阅下面的代码,了解如何使用mcrypt_create_iv()生成随机字符串.如果您想要用于用户识别的字符串,为什么不尝试使用UUID.单独使用mcrypt_create_iv只会生成不可读的字符.要将那些不可读的字符"转换"为可读的字符,请使用bin2hex函数,如下所示:
$random_string = bin2hex(mcrypt_create_iv(30, [MCRYPT_DEV_RANDOM|MCRYPT_DEV_URANDOM|MCRYPT_RAND]));
Run Code Online (Sandbox Code Playgroud)
"30"是您想要获得的初始化向量的大小.请记住,在具有早于5.3.0版本的PHP版本的Windows计算机上使用MCRYPT_DEV_URANDOM和MCRYPT_DEV_RANDOM将不起作用.对于这种情况,请使用MCRYPT_RAND.
如果要生成随机数,请使用mt_rand:
$random = mt_rand(0, 999999);
Run Code Online (Sandbox Code Playgroud)
如果需要字符串,可以通过散列函数传递结果整数:
$random = mt_rand(0, 999999);
$random_string = sha1($random);
Run Code Online (Sandbox Code Playgroud)
mcrypt_create_iv用于密码学.这与您的要求完全无关.
如果您希望在安全组件(盐,密码等)中使用随机字符串,请阅读/dev/urandom如下:
$random = file_get_contents('/dev/urandom', false, null, 0, 10);
Run Code Online (Sandbox Code Playgroud)
... 10长度在哪里,然后像这样转换:
$string = bin2hex($random);
$number = current(unpack('L', $random));
Run Code Online (Sandbox Code Playgroud)