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
原创粉丝点击