Gerador de senha aleatória em PHP [UPDATE]

Continuando com a série de posts sobre PHP, segue um script que foi útil para o desenvolvimendo do novo And After.

Por questões de segurança a senha dos usuários ficam criptografadas no banco (MD5) e o processo é irreversível (pelo menos em teoria) - isso impede a recuperação delas e cria a necessidade de regerar uma senha aleatória caso o usuário esqueça a sua.

Baseado em em um script da webtoolkit fiz algumas alterações (insignificantes) para atender exatamente ao que eu precisava, abaixo segue a função generatePassword que recebe um único parâmetro ($length) que indica o tamanho do password gerado.

 

function generatePassword($length) {
  $vowels = "aeiouyAEIOUY";
  $consonants = "bdghjmnpqrstvzBDGHJLMNPQRSTVWXZ0123456789";

  $password = "";
  $alt = time() % 2;
  for ($i = 0; $i < $length; $i++) {
    if ($alt == 1) {
       $password .= $consonants[(rand() % strlen($consonants))];
       $alt = 0;
    } else {
       $password .= $vowels[(rand() % strlen($vowels))];
       $alt = 1;
    }
  }
  return $password;
}

O script tem 2 conjuntos de caracteres (nas variáveis vowels e consoants) e intercala um caractere randômico de um grupo com um caractere randômico de outro grupo até a string (nosso password) atingir o tamanho requisitado.

[update]

O Carlos André Ferrari comentou uma outra função, com menos código porém sem intercalar os grupos de caracteres (vogais e consoantes) para gerar a senha, porém igualmente funcional:

function generatePassword($length=6) {
	return substr(str_shuffle("aeiouyAEIOUYbdghjmnpqrstvzBDGHJLMNPQRSTVWXZ0123456789"), 0, $length);
}

[/update]

 

Se você quiser aumentar o nível de segurança pode inserir caracteres especiais em uma das variáveis da string usada...

Ir para o topo