Postagem

Aqui é onde faço postagens de coisas que acho interessante.

Classe para geração de senha

Postagem do dia 04/01/2014 na categoria Classes em PHP



Classe que gera senha usando letras, números e símbolos especiais sem repetir caracteres, veja alguns exemplos de senha gerado com a classe:: %Z£l8YO+WU#&j, k5Cnà‚L°¢B3.2C, Wz¢f£X&Bpaksd, 5Dg12, £à‚URS, wà‚4?¢




/** 
 * Cria uma senha randonica, por padrao gera com 10 caracteres
 * @author Tayron Miranda <dev@tayron.com.br>
 */
class Password {
    private $password   = '';
    private $charDown   = 'abcdefghijklmnopqrstuvwxyz';
    private $charUp     = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    private $number     = '1234567890';
    private $symbol     = '!@#$%&*-+.,£¢£¢¬¢°?';
    private $temp       = array();    
 
    /**
     * Metodo que atualiza a lista de caracteres disponivel para ser usado na 
     * criacao a senha e armazena a senha gerada no atributo password da classe.
     *      
     * @param int $num Numero de caracteres que a senha tera
     */
    public function __construct($num = 10) {
        $this->updateData();
 
        for( $i = 0; $i < $num; $i++ ):
            $char = $this->temp[rand(0, 6)];
            $this->password .= $char;
            $this->updateData($char);
        endfor;     
    }
 
    /*
     * Metodo que atualiza a lista de caracteres a serem usados na criptografia
     * 
     * @param String $remove Recebe a o caracter a ser removido do array de caraceteres a serem usados
     */
    private function updateData($remove = ''){        
        if( $remove ):
            $this->charDown = str_replace($remove, '', $this->charDown);
            $this->charUp = str_replace($remove, '', $this->charUp);
            $this->number = str_replace($remove, '', $this->number);
            $this->symbol = str_replace($remove, '', $this->symbol);            
        endif;
 
        $this->temp = array(
            $this->charDown[rand(0, strlen($this->charDown) - 1)],
            $this->symbol[rand(0, strlen($this->symbol) - 1)],
            $this->charUp[rand(0, strlen($this->charUp) - 1)],
            $this->number[rand(0, strlen($this->number) - 1)],
            $this->symbol[rand(0, strlen($this->symbol) - 1)],
            $this->charDown[rand(0, strlen($this->charDown) - 1)],
            $this->charUp[rand(0, strlen($this->charUp) - 1)],
            $this->symbol[rand(0, strlen($this->symbol) - 1)],
        );
    }
 
    /**
     * Metodo que retorna a senha gerada
     * 
     * @return string Senha gerada
     */
    public function getKey(){        
        return $this->password;   
    }
}


Exemplo de utilização



// Gerando senha com 3 caracteres
echo (new Password(3))->getKey();

// Gerando senha com quantidade de caracteres default (10)
echo (new Password)->getKey();



Deixe seus comentários abaixo: