php密码生成类实例
本文实例讲述了php实现的密码生成类及其应用方法,分享给大家供大家参考。具体分析如下:
一、php密码生成类功能:
1.可设定密码长度。
2.可设定要生成的密码个数,批量生成。
3.可以指定密码的规则,字母,数字,特殊字符等。
二、用法:
GeneratePassword.class.php类文件如下:
<?php /**GeneratePasswordclass,根据指定规则生成password *Date:2013-12-23 *Author:fdipzone *Ver:1.0 * *Func: *publicbatchGenerate批量生成密码 *privategenerate生成单个密码 *privategetLetter获取字母 *privategetNumber获取数字 *privategetSpecial获取特殊字符 */ classGeneratePassword{//classstart //密码的规则default private$_rule=array( 'letter'=>1, 'number'=>1, 'special'=>1 ); private$_length=8;//密码长度 private$_num=1;//密码数量 private$_special='!@#$%^&*()_+=-';//允许的特殊字符 /**初始化 *@paramint$length密码长度 *@paramint$num密码数量 *@paramArray$rule密码规则 *@paramString$special允许的特殊字符 */ publicfunction__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; } } } /**批量生成密码 *@returnArray */ publicfunctionbatchGenerate(){ $passwords=array(); for($i=0;$i<$this->_num;$i++){ array_push($passwords,$this->generate()); } return$passwords; } /**生成单个密码 *@returnString */ privatefunctiongenerate(){ $password=''; $pool=''; $force_pool=''; if(isset($this->_rule['letter'])){ $letter=$this->getLetter(); switch($this->_rule['letter']){ case2: $force_pool.=substr($letter,mt_rand(0,strlen($letter)-1),1); break; case3: $force_pool.=strtolower(substr($letter,mt_rand(0,strlen($letter)-1),1)); $letter=strtolower($letter); break; case4: $force_pool.=strtoupper(substr($letter,mt_rand(0,strlen($letter)-1),1)); $letter=strtoupper($letter); break; case5: $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']){ case2: $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']){ case2: $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; } /**字母*/ privatefunctiongetLetter(){ $letter='AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'; return$letter; } /**数字*/ privatefunctiongetNumber(){ $number='1234567890'; return$number; } /**特殊字符*/ privatefunctiongetSpecial(){ $special=$this->_special; return$special; } }//classend ?>
demo示例程序如下:
<?php require'GeneratePassword.class.php'; $rule=array( 'letter'=>5,//必须含有大小写字母 'number'=>2,//必须含有数字 'special'=>2//必须含有特殊字符 ); $special='!@#$%_-'; $obj=newGeneratePassword(8,10,$rule,$special); $passwords=$obj->batchGenerate(); echoimplode('<br>',$passwords); ?>
本文完整源码可点击此处本站下载。
相信本文所述对大家的C#程序设计有一定的借鉴价值。