找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1676|回复: 0
打印 上一主题 下一主题

php密码生成类实例

[复制链接]

2560

主题

2560

帖子

7622

积分

论坛元老

Rank: 8Rank: 8

积分
7622
跳转到指定楼层
楼主
发表于 2018-2-14 05:54:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了php实现的密码生成类及其应用方法,分享给大家供大家参考。具体分析如下:
一、php密码生成类功能:
1.可设定密码长度。
2.可设定要生成的密码个数,批量生成。
3.可以指定密码的规则,字母,数字,特殊字符等。
二、用法:
GeneratePassword.class.php类文件如下:
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_length = $length;
    }

    if(isset($num) && is_numeric($num) && $num>0 && $num_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_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示例程序如下:
5, // 必须含有大小写字母
  'number' => 2, // 必须含有数字
  'special' => 2 // 必须含有特殊字符
);

$special = '!@#$%_-';

$obj = new GeneratePassword(8, 10, $rule, $special);
$passwords = $obj->batchGenerate();

echo implode('
', $passwords);
?>
本文完整源码可点击此处本站下载
相信本文所述对大家的C#程序设计有一定的借鉴价值。
            
            
您可能感兴趣的文章:
  • php生成随机密码的三种方法小结
  • PHP生成随机用户名和密码的实现代码
  • php中生成随机密码的自定义函数代码
  • php生成随机密码自定义函数代码(简单快速)
  • php编写批量生成不重复的卡号密码代码
  • php实现随机生成易于记忆的密码
  • PHP生成随机密码方法汇总
  • 纯php生成随机密码
  • php用户密码加密算法分析【Discuz加密算法】
  • PHP中快速生成随机密码的几种方式
  • PHP判断密码强度的方法详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端