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.