首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在php中生成随机密码

在php中生成随机密码
EN

Stack Overflow用户
提问于 2011-05-24 03:29:29
回答 14查看 411.6K关注 0票数 215

我正在尝试在php中生成一个随机密码。

然而,我得到了所有的‘a’,返回类型是数组类型,我希望它是一个字符串。有关于如何更正代码的想法吗?

谢谢。

代码语言:javascript
复制
function randomPassword() {
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, count($alphabet)-1);
        $pass[$i] = $alphabet[$n];
    }
    return $pass;
}
EN

回答 14

Stack Overflow用户

发布于 2014-02-01 20:55:42

我知道您正在尝试以一种特定的方式生成密码,但您可能也想看看这种方法……

代码语言:javascript
复制
$bytes = openssl_random_pseudo_bytes(2);

$pwd = bin2hex($bytes);

它取自php.net站点,它创建了一个字符串,该字符串的长度是您在openssl_random_pseudo_bytes函数中输入的数字的两倍。因此,上面的代码将创建一个4个字符长度的密码。

简而言之。

代码语言:javascript
复制
$pwd = bin2hex(openssl_random_pseudo_bytes(4));

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

但是请注意,密码只包含数字0-9和小写字母a-f!

票数 119
EN

Stack Overflow用户

发布于 2012-12-11 04:57:40

在一行代码中:

代码语言:javascript
复制
substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') , 0 , 10 )
票数 34
EN

Stack Overflow用户

发布于 2011-05-24 03:30:48

您需要strlen($alphabet),而不是常量alphabetcount (等同于'alphabet')。

然而,rand不是用于此目的的合适的随机函数。它的输出可以很容易地预测,因为它是用当前时间隐式播种的。此外,rand不是加密安全的;因此,根据输出确定其内部状态相对容易。

取而代之的是,从/dev/urandom读取以获得加密随机数据。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6101956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档