Gerar senha em PHP

Subodh Poudel 30 janeiro 2023
  1. Use a função rand() para selecionar um índice de array aleatória para gerar uma senha aleatória em PHP
  2. Use as funções openssl_random_pseudo_bytes() e bin2hex() para gerar senha aleatória em PHP
  3. Use as funções substr() e str_shuffle() para gerar uma senha aleatória a partir de uma determinada string alfanumérica em PHP
Gerar senha em PHP

Apresentaremos um método para gerar senhas aleatórias em PHP usando a função rand(). Este método usa a combinação de letras maiúsculas e minúsculas e números para formar uma senha. A função rand() retorna o inteiro aleatório, que é o índice do array, para escolher a combinação de senha.

Também apresentaremos outro método para gerar senhas aleatórias em PHP usando as funções openssl_random_pseudo_bytes() e bin2hex().

Este artigo irá demonstrar outro método para gerar senhas aleatórias em PHP usando as funções substr() e str_shuffle(). Este método também usa os valores alfanuméricos fornecidos no programa para formar uma senha aleatória.

Use a função rand() para selecionar um índice de array aleatória para gerar uma senha aleatória em PHP

Podemos usar a função rand() para gerar uma senha aleatória em PHP. A função rand() retorna um inteiro aleatório do intervalo dos parâmetros fornecidos. A função usa dois valores inteiros como parâmetros. Podemos definir uma sequência de letras e números de onde podemos combinar a senha. O número aleatório indexa a matriz para escolher alfabetos ou números aleatórios. Podemos repetir a função rand() para criar a senha do comprimento desejado.

Por exemplo, crie uma variável $comb e armazene a string compreendendo todos os alfabetos minúsculos e maiúsculos e os números de 0 a 10 como abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890. Crie um array $pass com a função array(). Armazene o comprimento da string $comb na variável $combLen. Crie um loop for e repita o loop oito vezes. Dentro do loop, use a função rand() com 0 e a variável $combLen como parâmetros e armazene o valor na variável $n. Em seguida, atribua $comb[$n] ao array $pass. Fora do loop, converta o array em string usando a função implode().

No exemplo abaixo, geramos uma senha aleatória a partir da combinação armazenada na variável $comb. A função rand() pega um inteiro aleatório de 0 ao comprimento da string $comb. O inteiro aleatório é usado como um índice para obter o valor alfanumérico aleatório da combinação. O loop é executado oito vezes e escolhe oito valores alfanuméricos aleatórios e, finalmente, forma uma senha aleatória. Verifique o Manual do PHP para aprender mais sobre a função rand().

Código de exemplo:

# php 7.x
<?php
 $comb = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
 $pass = array(); 
 $combLen = strlen($comb) - 1; 
 for ($i = 0; $i < 8; $i++) {
     $n = rand(0, $combLen);
     $pass[] = $comb[$n];
 }
 print(implode($pass)); 
?>

Resultado:

aPsQWlzh

Use as funções openssl_random_pseudo_bytes() e bin2hex() para gerar senha aleatória em PHP

Podemos usar a função openssl_random_pseudo_bytes() para gerar uma string pseudo-aleatória de bytes. Podemos especificar um valor inteiro como o parâmetro da função para definir o comprimento do número desejado de bytes a serem gerados. A função bin2hex() converte os dados binários em representações hexadecimais. Podemos usar esta função para converter a string de bytes gerada aleatoriamente para a representação hexadecimal e formar uma senha. Este método gera a senha aleatória composta pelos valores alfanuméricos.

Por exemplo, crie uma variável $bytes e atribua-a com a função openssl_random_pseudo_bytes(). Especifique 4 como o parâmetro da função. Crie outra variável, $pass, e escreva a função bin2hex() nela. Especifique a variável $bytes na função. Imprima a variável $pass usando a instrução echo.

No exemplo abaixo, o 4 na função openssl_random_pseudo_bytes() denota o número de bytes a serem gerados aleatoriamente. A função bin2hex() converte os bytes em equivalentes hexadecimais. A senha gerada aleatoriamente contém o comprimento de 8 porque a conversão hexadecimal de 4 bytes de string resulta em 8. Verifique o Manual do PHP para saber mais sobre a função bin2hex().

Código de exemplo:

#php 7.x
<?php
$bytes = openssl_random_pseudo_bytes(4);
$pass = bin2hex($bytes);
echo $pass;
?>

Resultado:

ed203eef

Use as funções substr() e str_shuffle() para gerar uma senha aleatória a partir de uma determinada string alfanumérica em PHP

Podemos usar o método str_shuffle() para embaralhar aleatoriamente a string fornecida. A função embaralha a string de uma combinação de letras maiúsculas e minúsculas junto com os números de 0 a 9. Assim, ela forma uma permutação de todos os casos possíveis. Podemos usar a função substr() para a string embaralhada para escolher uma parte de seus caracteres. Assim, podemos gerar uma senha aleatória.

Por exemplo, crie uma variável $comb e armazene o valor da sequência abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 nela. Use str_shuffle() para embaralhar a variável $comb e armazená-la na variável $shfl. Em seguida, use a função substr() e a variável $shfl, 0 e 8 como os parâmetros. Armazene a função em uma variável $pwd e imprima a variável.

No exemplo abaixo, usamos o mesmo conjunto de valores alfanuméricos do primeiro método. A senha gerada aleatoriamente é formada a partir desses valores alfanuméricos. A função str_shuffle() embaralha o valor alfanumérico e cria uma permutação aleatória. Usamos 0 e 8 na função substr() para selecionar os oito caracteres do primeiro índice da permutação aleatória. Assim, ele gera uma senha aleatória de oito dígitos.

Exemplo de código:

#php 7.x
<?php
$comb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$shfl = str_shuffle($comb);
$pwd = substr($shfl,0,8);
echo $pwd;
?>

Resultado:

jenZq3lY
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn