我正在尝试在php中生成一个随机密码。
然而,我得到了所有的‘a’,返回类型是数组类型,我希望它是一个字符串。有关于如何更正代码的想法吗?
谢谢。
function randomPassword() {
$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
for ($i = 0; $i < 8; $i++) {
$n = rand(0, count($alphabet)-1);
$pass[$i] = $alphabet[$n];
}
return $pass;
}
发布于 2014-02-01 20:55:42
我知道您正在尝试以一种特定的方式生成密码,但您可能也想看看这种方法……
$bytes = openssl_random_pseudo_bytes(2);
$pwd = bin2hex($bytes);
它取自php.net站点,它创建了一个字符串,该字符串的长度是您在openssl_random_pseudo_bytes函数中输入的数字的两倍。因此,上面的代码将创建一个4个字符长度的密码。
简而言之。
$pwd = bin2hex(openssl_random_pseudo_bytes(4));
将创建一个长度为8个字符的密码。
但是请注意,密码只包含数字0-9和小写字母a-f!
发布于 2012-12-11 04:57:40
在一行代码中:
substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') , 0 , 10 )
发布于 2011-05-24 03:30:48
您需要strlen($alphabet)
,而不是常量alphabet
的count
(等同于'alphabet'
)。
然而,rand
不是用于此目的的合适的随机函数。它的输出可以很容易地预测,因为它是用当前时间隐式播种的。此外,rand
不是加密安全的;因此,根据输出确定其内部状态相对容易。
取而代之的是,从/dev/urandom
读取以获得加密随机数据。
https://stackoverflow.com/questions/6101956
复制相似问题