Gerar String Aleatória em PHP
- Gerar String Aleatória em PHP
-
Gerar String Aleatória com a Função
uniqid()
-
Gerar String Aleatória com a Função
str_shuffle($string)
em PHP - Gerar Strings hexadecimais aleatórias em PHP
- Gerar strings aleatórias criptograficamente seguras em PHP
Neste artigo tutorial, discutiremos como gerar a string aleatória em PHP.
Gerar String Aleatória em PHP
vamos definir a função do gerador de string aleatório em PHP:
<?php
function random_str_generator ($len_of_gen_str){
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$var_size = strlen($chars);
echo "Random string =";
for( $x = 0; $x < $len_of_gen_str; $x++ ) {
$random_str= $chars[ rand( 0, $var_size - 1 ) ];
echo $random_str;
}
echo "\n";
}
random_str_generator (8)
?>
Resultado:
Random string =ExmIixDb
É desnecessário levar apenas alfabetos na variável declarada; você também pode adicionar números, símbolos, etc., qualquer coisa que você quiser em sua string gerada aleatoriamente.
Na quarta linha, pegamos o comprimento da variável declarada usando a função strlen()
. Ajuda rand( 0, $var_size - 1 )
a gerar o índice do intervalo específico dado e, em seguida, adicionar esse valor à variável recém-criada e o loop ajuda o rand( 0, $var_size - 1 )
a gerar comprimento específico de corda.
Gerar String Aleatória com a Função uniqid()
Esta é outra forma de geração de string aleatória usando a função interna uniqid()
. Ele gera o identificador exclusivo de 13 caracteres, que é baseado no carimbo de data/hora atual. Aqui está a solução:
<?php
$Random_str = uniqid();
echo "Random String:", $Random_str, "\n";
?>
Resultado:
Random String:606208975a59f
A função uniqid()
também aceita parâmetros que podem aumentar a exclusividade da string ou do identificador. Dá-lhe um valor mais descrito. Aqui estão algumas de suas soluções:
<?php
echo uniqid('user_');
?>
Resultado:
user_60620a2b23235
Gerar String Aleatória com a Função str_shuffle($string)
em PHP
str_shuffle($string)
é a função embutida, que funciona como uma função geradora de string aleatória, como vimos acima, que usamos um loop e a função embutida rand()
para gerar uma string aleatória, mas também é diferente. Usamos apenas a função embutida para gerar uma string única que pode nos ajudar a formar uma senha única de seu comprimento exigente, especificando o intervalo para (str_shuffle ($ string), 0, x (qualquer número))
.
<?php
$x = 0;
$y = 10;
$Strings = '0123456789abcdefghijklmnopqrstuvwxyz';
echo "Gen_rand_str: ",substr(str_shuffle($Strings), $x, $y), "\n";
$a = 0;
$b = 20;
$Strings='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
echo "Gen_My_Pass: ",'hello.'.substr(str_shuffle($Strings), $a, $b).'.World',"\n";
?>
Resultado:
Gen_rand_str: b38aenwpkh
Gen_My_Pass: hello.EUMm4TB26CltW8qYnApF.World
Também pode nos ajudar a gerar URLs, nomes de arquivos aleatórios e.t.c. É mais seguro do que o gerador acima e complexo na previsão.
Este método é mais preciso, mas tem alguns problemas, como não poder fornecer os mesmos caracteres em sua string aleatória duas vezes e a saída aleatória é longa, desde que você forneça a string de entrada.
Gerar Strings hexadecimais aleatórias em PHP
As funções md5($string, $raw_output)
e sha1($string,$raw_output)
nos ajudam a gerar strings hexadecimais aleatórias. Nessas funções, usamos time()
como entrada para obter a saída, e se quisermos uma string hexadecimal de 32 caracteres, usamos md5()
, e para 40 caracteres, usamos sha1()
. Finalmente, também podemos extrair uma string aleatória de nosso comprimento especificado pela função substr()
.
<?php
echo "Out1: ",substr(md5(time()), 0, 16),"\n";
echo "Out2: ",substr(sha1(time()), 0, 16),"\n";
echo "Out3: ",md5(time()),"\n";
echo "Out4: ",sha1(time()),"\n";
?>
Resultado:
Out1: fcc78a076a5b743d
Out2: ae03e817c0dc6048
Out3: fcc78a076a5b743d8916038b48a6b0ee
Out4: ae03e817c0dc6048c19b708ce411a058294425b1
Gerar strings aleatórias criptograficamente seguras em PHP
Este gerador é o recurso mais importante e útil do PHP. Todos os geradores que discutiremos acima não são criptograficamente seguros. Criptograficamente seguro significa que ele também pode gerar uma string aleatória, mas é difícil para um terceiro gerar o mesmo número aleatório. É por isso que podemos dizer que é criptograficamente seguro.
random_bytes($length)
é a função que pode gerar uma string aleatória criptograficamente segura. O usuário especifica o parâmetro de comprimento. Veja o exemplo abaixo.
<?php
echo "Output-1: ",bin2hex(random_bytes(10)),"\n";
echo "Output-2: ",bin2hex(random_bytes(20)),"\n";
echo "Output-3: ",bin2hex(random_bytes(24)),"\n";
?>
Resultado:
Output-1: 911fc716798ce464c7c3
Output-2: 182fedf65a90b66139d80dbfc0f82912b73f37cd
Output-3: c3408d3a0dea41251dce940fe550452ca180cf5effaad235
Como você viu no código acima, usamos a função bin2hex()
. Quando random_bytes($length)
fornece uma saída específica, então bin2hex()
converte em valores hexadecimais. O que pode dobrar o valor da função random_bytes($length)
A função openssl_random_pseudo_bytes($length, &$crypto_strong)
também é usada para gerar strings criptograficamente aleatórias. O parâmetro crypto_strong
é usado para analisar se † a string é gerada a partir de um algoritmo criptograficamente seguro ou não.
Se quisermos uma string aleatória criptograficamente segura que utilize todas as strings de a a z, usamos os códigos abaixo.
<?php
function secure_random_string($length) {
$rand_string = '';
for($i = 0; $i < $length; $i++) {
$number = random_int(0, 36);
$character = base_convert($number, 10, 36);
$rand_string .= $character;
}
return $rand_string;
}
echo "Sec_Out_1: ",secure_random_string(10),"\n";
echo "Sec_Out_2: ",secure_random_string(10),"\n";
echo "Sec_Out_3: ",secure_random_string(10),"\n";
?>
Resultado:
Sec_Out_1: znxtaqynoi
Sec_Out_2: 10k10zkddntm
Sec_Out_3: ook8gfck6u
Especificamos o comprimento da string aleatória na função secure_random_string()
. Nesta função, usamos um loop no qual random_int()
gera inteiros aleatórios do intervalo específico fornecido. Depois disso, convertemos o inteiro da base 10 para 36 com a função base_convert()
. Eventualmente, nosso caractere resultante é de qualquer dígito de 0-9 e qualquer caractere de a-z. É mais uma maneira de gerar uma string criptográfica aleatoriamente.