php password generation class instance

  • 2021-07-21 07:47:43
  • OfStack

This article describes the example of php implementation of the password generation class and its application methods, to share for your reference. The specific analysis is as follows:

1. php password generation class function:

1. The password length can be set.
2. You can set the number of passwords to be generated and generate them in batches.
3. You can specify password rules, letters, numbers, special characters, etc.

2. Usage:

The GeneratePassword. class. php class files are as follows:


<?php 
/** Generate Password class Generate according to the specified rules password 
*  Date:  2013-12-23 
*  Author: fdipzone 
*  Ver:  1.0 
* 
*  Func: 
*  public batchGenerate  Generate passwords in batches  
*  private generate    Generate a single password  
*  private getLetter    Get letters   
*  private getNumber    Get a number  
*  private getSpecial   Get special characters  
*/ 
 
class GeneratePassword{ // class start 
 
  //  Rules for passwords  default 
  private $_rule = array( 
   'letter' => 1, 
   'number' => 1, 
   'special' => 1 
  );
 
  private $_length = 8;         //  Password length  
  private $_num = 1;          //  Number of passwords  
  private $_special = '!@#$%^&*()_+=-'; // Special characters allowed  
 
  /**  Initialization  
  * @param int  $length  Password length  
  * @param int  $num    Number of passwords  
  * @param Array $rule   Cryptographic rules  
  * @param String $special  Special characters allowed  
  */ 
  public function __construct($length=8, $num=1, $rule=array(), $special=''){ 
 
    if(isset($length) && is_numeric($length) && $length>=4 && $length<=50){ //  Length  
      $this->_length = $length; 
    } 
 
    if(isset($num) && is_numeric($num) && $num>0 && $num<=100){ //  Quantity  
      $this->_num = $num; 
    } 
 
    if(isset($special) && is_string($special) && $special!=''){ //  Special character  
      $this->_special = $special; 
    } 
 
    if($rule){ //  Rules  
 
      $t_rule = array(); 
 
      if(isset($rule['letter']) && in_array($rule['letter'], array(1,2,3,4,5))){ // 1: Optional  2: Must  3: Must be lowercase  4: Must be capitalized  5: Both case and case must be  
        $t_rule['letter'] = $rule['letter']; 
      } 
 
      if(isset($rule['number']) && in_array($rule['number'], array(1,2))){ // 1: Optional  2: Must  
        $t_rule['number'] = $rule['number']; 
      } 
 
      if(isset($rule['special']) && in_array($rule['special'], array(1,2))){ // 1: Optional  2: Must  
        $t_rule['special'] = $rule['special']; 
      } 
 
      if($t_rule){ 
        $this->_rule = $t_rule; 
      } 
    } 
  } 
 
  /**  Generate passwords in batches  
  * @return Array 
  */ 
  public function batchGenerate(){ 
    $passwords = array(); 
    for($i=0; $i<$this->_num; $i++){ 
      array_push($passwords, $this->generate()); 
    } 
    return $passwords; 
  } 
 
  /**  Generate a single password  
  * @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); //  Random disruption  
 
    $password = str_shuffle($force_pool. substr($pool, 0, $this->_length-strlen($force_pool))); //  Random disruption again  
 
    return $password; 
  } 
 
  /**  Alphabet  */ 
  private function getLetter(){ 
    $letter = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'; 
    return $letter; 
  } 
 
  /**  Figures  */ 
  private function getNumber(){ 
    $number = '1234567890'; 
    return $number; 
  } 
 
  /**  Special character  */ 
  private function getSpecial(){ 
    $special = $this->_special; 
    return $special; 
  } 
} // class end 
 
?> 

The demo sample program is as follows:


<?php 
require 'GeneratePassword.class.php'; 
 
$rule = array( 
  'letter' => 5, //  Must contain upper and lower case letters  
  'number' => 2, //  Must contain numbers  
  'special' => 2 //  Must contain special characters  
); 
 
$special = '!@#$%_-'; 
 
$obj = new GeneratePassword(8, 10, $rule, $special); 
$passwords = $obj->batchGenerate(); 
 
echo implode('<br>', $passwords); 
?> 

The complete source code of this article can be downloaded here.

I believe that this article for everyone's C # programming has a certain reference value.


Related articles: