在php中如何生成一个随机密码?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (94)

我想在php中生成一个随机密码。

但是,我得到了所有的‘a’,返回类型是数组类型,我希望它是一个字符串。我该如何修改我的代码?

谢谢

function randomPassword() {
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, count($alphabet)-1);
        $pass[$i] = $alphabet[$n];
    }
    return $pass;
}
提问于
用户回答回答于

看看这个方法...

$bytes = openssl_random_pseudo_bytes(2);

$pwd = bin2hex($bytes);

它是我从php.net站点中获取的,它创建了一个字符串,它的长度是你在OpenSSL中输入的数字的两倍。

总之..。

$pwd = bin2hex(openssl_random_pseudo_bytes(4));

将创建一个长8个字符的密码。

然而,请注意,密码只包含数字0-9和小头字母a-f!

用户回答回答于

安全警告rand()不是一个密码安全的伪随机数生成器。查看在PHP中生成密码安全的伪随机字符串

试试这个(使用,strlen而不是count,因为count一个字符串总是1):

function randomPassword() {
    $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
    $pass = array(); //remember to declare $pass as an array
    $alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, $alphaLength);
        $pass[] = $alphabet[$n];
    }
    return implode($pass); //turn the array into a string
}

演示:http : //codepad.org/UL8k4aYK

扫码关注云+社区

领取腾讯云代金券