php 复杂密码生成,PHP生成随机密码类分享

类代码:

/**

* PHP - Password Generator Class

* Version 1.0.0

*

*/

if (@!is_object($passGen) || !isset($passGen)) {

$passGen = new Password;

}

class Password

{

/**

* 大写字母 A-Z

*

* @var array

*/

protected $uppercase_chars;

/**

* 小写字母 a-z

*

* @var array

*/

protected $lowercase_chars;

/**

* 阿拉伯数字 0-9

*

* @var array

*/

protected $number_chars;

/**

* 特殊字符

*

* @var array

*/

protected $special_chars;

/**

* 其他特殊字符

*

* @var array

*/

protected $extra_chars;

/**

* 最终用来生成密码的所有字符

*

* @var array

*/

protected $chars = array();

/**

* 密码长度

*

* @var array

*/

public $length;

/**

* 是否使用大写字母

*

* @var boolean

*/

public $uppercase;

/**

* 是否使用小写字母

*

* @var boolean

*/

public $lowercase;

/**

* 是否使用阿拉伯数字

*

* @var boolean

*/

public $number;

/**

* 是否使用特殊字符

*

* @var boolean

*/

public $special;

/**

* 是否使用额外的特殊字符

*

* @var boolean

*/

public $extra;

/**

* 初始化密码设置

*

* @param int $length

*/

function Password($length = 12)

{

$this->length = $length;

$this->configure(true, true, true, false, false);

}

/**

* 配置

*/

function configure($uppercase = false, $lowercase = false, $number = false,

$special = false, $extra = false

) {

$this->chars = array();

$this->upper_chars = array(

"A", "B", "C", "D", "E", "F", "G", "H", "I",

"J", "K", "L", "M", "N", "O", "P", "Q", "R",

"S", "T", "U", "V", "W", "X", "Y", "Z"

);

$this->lower_chars = array(

"a", "b", "c", "d", "e", "f", "g", "h", "i",

"j", "k", "l", "m", "n", "o", "p", "q", "r",

"s", "t", "u", "v", "w", "x", "y", "z"

);

$this->number_chars = array(

"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"

);

$this->special_chars = array(

"!", "@", "#", "$", "%", "^", "&", "*", "(", ")"

);

$this->extra_chars = array(

"[", "]", "{", "}", "-", "_", "+", "=", "

">", "?", "/", "`", "~", "|", ",", ".", ";", ":"

);

if (($this->uppercase = $uppercase) === true) {

$this->chars = array_merge($this->chars, $this->upper_chars);

}

if (($this->lowercase = $lowercase) === true) {

$this->chars = array_merge($this->chars, $this->lower_chars);

}

if (($this->number = $number) === true) {

$this->chars = array_merge($this->chars, $this->number_chars);

}

if (($this->special = $special) === true) {

$this->chars = array_merge($this->chars, $this->special_chars);

}

if (($this->extra = $extra) === true) {

$this->chars = array_merge($this->chars, $this->extra_chars);

}

$this->chars = array_unique($this->chars);

}

/**

* 从字符列中生成随机密码

*

* @return string

**/

function generate()

{

if (empty($this->chars)) {

return false;

}

$hash = '';

$totalChars = count($this->chars) - 1;

for ($i = 0; $i < $this->length; $i++) {

$hash .= $this->chars[$this->random(0, $totalChars)];

}

return $hash;

}

/**

* 生成随机数字

*

* @return int

*/

function random($min = 0, $max = 0)

{

$max_random = 4294967295;

$random = uniqid(microtime() . mt_rand(), true);

$random = sha1(md5($random));

$value = substr($random, 0, 8);

$value = abs(hexdec($value));

if ($max != 0) {

$value = $min + ($max - $min + 1) * $value / ($max_random + 1);

}

return abs(intval($value));

}

}

调用:

include_once 'password.class.php';

echo $passGen->generate();

//FS4yq74e2LeE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值