首页 > 编程 > PHP > 正文

php密码生成类实例

2020-03-22 17:49:48
字体:
来源:转载
供稿:网友
本文实例讲述了php实现的密码生成类及其应用方法,分享给大家供大家参考。具体分析如下:一、php密码生成类功能:1.可设定密码长度。
2.可设定要生成的密码个数,批量生成。
3.可以指定密码的规则,字母,数字,特殊字符等。二、用法:GeneratePassword.html' target='_blank'>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
$obj = new GeneratePassword(8, 10, $rule, $special); $passwords = $obj- batchGenerate(); echo implode(' br ', $passwords);
本文完整源码可点击此处本站下载。相信本文所述对大家的C#程序设计有一定的借鉴价值。PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表