Gerar String Aleatória em PHP

Muhammad Abubakar 30 janeiro 2023
  1. Gerar String Aleatória em PHP
  2. Gerar String Aleatória com a Função uniqid()
  3. Gerar String Aleatória com a Função str_shuffle($string) em PHP
  4. Gerar Strings hexadecimais aleatórias em PHP
  5. Gerar strings aleatórias criptograficamente seguras em PHP
Gerar String Aleatória 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.

Artigo relacionado - PHP String