php 密码生成类
来源:互联网 发布:iphone监控软件 编辑:程序博客网 时间:2024/06/06 06:49
php 密码生成类
功能:
1.可设定密码长度。
2.可设定要生成的密码个数,批量生成。
3.可以指定密码的规则,字母,数字,特殊字符等。
GeneratePassword.class.php
<?php/** Generate Password class,根据指定规则生成password* Date: 2013-12-23* Author: fdipzone* Ver: 1.0** Func:* public batchGenerate 批量生成密码* private generate 生成单个密码* private getLetter 获取字母 * private getNumber 获取数字* private getSpecial 获取特殊字符*/class GeneratePassword{ // class start // 密码的规则 default private $_rule = array( 'letter' => 1, 'number' => 1, 'special' => 1 ); private $_length = 8; // 密码长度 private $_num = 1; // 密码数量 private $_special = '!@#$%^&*()_+=-'; //允许的特殊字符 /** 初始化 * @param int $length 密码长度 * @param int $num 密码数量 * @param Array $rule 密码规则 * @param String $special 允许的特殊字符 */ public function __construct($length=8, $num=1, $rule=array(), $special=''){ if(isset($length) && is_numeric($length) && $length>=4 && $length<=50){ // 长度 $this->_length = $length; } if(isset($num) && is_numeric($num) && $num>0 && $num<=100){ // 数量 $this->_num = $num; } if(isset($special) && is_string($special) && $special!=''){ // 特殊字符 $this->_special = $special; } if($rule){ // 规则 $t_rule = array(); if(isset($rule['letter']) && in_array($rule['letter'], array(1,2,3,4,5))){ // 1:可选用 2:必须 3:必须小写 4:必须大写 5:大小写都必须 $t_rule['letter'] = $rule['letter']; } if(isset($rule['number']) && in_array($rule['number'], array(1,2))){ // 1:可选用 2:必须 $t_rule['number'] = $rule['number']; } if(isset($rule['special']) && in_array($rule['special'], array(1,2))){ // 1:可选用 2:必须 $t_rule['special'] = $rule['special']; } if($t_rule){ $this->_rule = $t_rule; } } } /** 批量生成密码 * @return Array */ public function batchGenerate(){ $passwords = array(); for($i=0; $i<$this->_num; $i++){ array_push($passwords, $this->generate()); } return $passwords; } /** 生成单个密码 * @return String */ private function generate(){ $password = ''; $pool = ''; $force_pool = ''; if(isset($this->_rule['letter'])){ $letter = $this->getLetter(); switch($this->_rule['letter']){ case 2: $force_pool .= substr($letter, mt_rand(0,strlen($letter)-1), 1); break; case 3: $force_pool .= strtolower(substr($letter, mt_rand(0,strlen($letter)-1), 1)); $letter = strtolower($letter); break; case 4: $force_pool .= strtoupper(substr($letter, mt_rand(0,strlen($letter)-1), 1)); $letter = strtoupper($letter); break; case 5: $force_pool .= strtolower(substr($letter, mt_rand(0,strlen($letter)-1), 1)); $force_pool .= strtoupper(substr($letter, mt_rand(0,strlen($letter)-1), 1)); break; } $pool .= $letter; } if(isset($this->_rule['number'])){ $number = $this->getNumber(); switch($this->_rule['number']){ case 2: $force_pool .= substr($number, mt_rand(0,strlen($number)-1), 1); break; } $pool .= $number; } if(isset($this->_rule['special'])){ $special = $this->getSpecial(); switch($this->_rule['special']){ case 2: $force_pool .= substr($special, mt_rand(0,strlen($special)-1), 1); break; } $pool .= $special; } $pool = str_shuffle($pool); // 随机打乱 $password = str_shuffle($force_pool. substr($pool, 0, $this->_length-strlen($force_pool))); // 再次随机打乱 return $password; } /** 字母 */ private function getLetter(){ $letter = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'; return $letter; } /** 数字 */ private function getNumber(){ $number = '1234567890'; return $number; } /** 特殊字符 */ private function getSpecial(){ $special = $this->_special; return $special; }} // class end?>
demo:
<?phprequire 'GeneratePassword.class.php';$rule = array( 'letter' => 5, // 必须含有大小写字母 'number' => 2, // 必须含有数字 'special' => 2 // 必须含有特殊字符);$special = '!@#$%_-';$obj = new GeneratePassword(8, 10, $rule, $special);$passwords = $obj->batchGenerate();echo implode('<br>', $passwords);?>
源码下载地址:点击查看
0 0
- php 密码生成类
- PHP穷举密码生成
- php生成随机密码
- PHP 生成随机密码
- PHP生成随机密码
- php 生成随机密码
- PHP随机密码的生成
- PHP 自动生成随机密码
- php实现点卡卡号密码生成
- PHP批量生成密码功能
- PHP 随机生成 用户名和 随机 密码
- php生成随机密码的练习记录
- php生成随机密码的方法总结
- PHP生成随机用户名和密码
- php 利用rand()函数生成密码
- PHP生成随机密码的方法
- 【PHP】浅谈生成随机密码的方法
- 随机密码生成类
- C++实现RTMP协议发送H.264编码及AAC编码的音视频
- 通过DataAdapter和DataSet进行增删改
- 提起2013,我所领悟到的
- 几个有意思的算法题
- jquery表格奇偶行设置不同颜色
- php 密码生成类
- STM32时钟配置方法详解
- 派生类不能在成员初始化列表中直接初始化基类的成员
- C语言经典算法01
- Single Number
- C语言经典算法02
- 【UI-BCG】在菜单上点击时显示或隐藏 对应窗口
- 史上最全设计模式导学目录(完整版)
- C语言经典算法03