Generar cadena aleatoria en PHP

Muhammad Abubakar 30 enero 2023
  1. Generar cadena aleatoria en PHP
  2. Genere una cadena aleatoria con la función uniqid()
  3. Genere una cadena aleatoria con la función str_shuffle($string) en PHP
  4. Generar cadenas hexadecimales aleatorias en PHP
  5. Genere cadenas aleatorias criptográficamente seguras en PHP
Generar cadena aleatoria en PHP

En este artículo del tutorial, discutiremos cómo generar la cadena aleatoria en PHP.

Generar cadena aleatoria en PHP

vamos a definir la función generadora de cadenas aleatorias en 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)
?>

Producción :

Random string =ExmIixDb

No es necesario tomar solo alfabetos en la variable declarada; también puede agregar números, símbolos, etc., cualquier cosa que desee en su cadena de generación aleatoria.

En la cuarta línea, tomamos la longitud de la variable declarada usando la función strlen(). Ayuda a rand( 0, $var_size - 1 ) a generar un índice a partir del rango específico dado y luego agrega ese valor a la variable recién creada y el bucle ayuda al rand( 0, $var_size - 1 ) a generar una longitud específica de cuerda.

Genere una cadena aleatoria con la función uniqid()

Esta es otra forma de generar cadenas aleatorias utilizando la función incorporada uniqid(). Genera el identificador único largo de 13 caracteres, que se basa en la marca de tiempo actual. Esta es la solucion:

<?php 
$Random_str = uniqid();  
echo "Random String:", $Random_str, "\n";
?> 

Producción :

Random String:606208975a59f

La función uniqid() también acepta parámetros que pueden aumentar la unicidad de la cadena o el identificador. Te da un valor más descrito. Estas son algunas de sus soluciones:

<?php 
echo uniqid('user_');
?> 

Producción :

user_60620a2b23235 

Genere una cadena aleatoria con la función str_shuffle($string) en PHP

str_shuffle($string) es la función incorporada, que funciona como una función generadora de cadenas aleatorias, como hemos visto anteriormente, que usamos un bucle y la función incorporada rand() para generar una cadena aleatoria, pero también es diferente. Usamos solo la función incorporada para generar una cadena única que puede ayudarnos a formar una contraseña única de su longitud exigente especificando el rango a (str_shuffle($string),0,x(any number)).

<?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";
?>

Producción :

Gen_rand_str: b38aenwpkh
Gen_My_Pass: hello.EUMm4TB26CltW8qYnApF.World

También puede ayudarnos a generar URL, nombres de archivos aleatorios, etc. Es más seguro que el generador anterior y complejo en la predicción.

Este método es más preciso pero tiene algunos problemas, como que no puede dar los mismos caracteres en su cadena aleatoria dos veces y la salida aleatoria es larga como usted da la cadena de entrada.

Generar cadenas hexadecimales aleatorias en PHP

Las funciones md5($string, $raw_output) y sha1($string,$raw_output) nos ayudan a generar una cadena hexadecimal aleatoria. En estas funciones, usamos time() como entrada para lograr la salida, y si queremos una cadena hexadecimal de 32 caracteres, usamos md5(), y para 40 caracteres, usamos sha1(). Finalmente, también podemos extraer una cadena aleatoria de nuestra longitud especificada mediante la función 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";
 
?>

Producción :

Out1: fcc78a076a5b743d
Out2: ae03e817c0dc6048
Out3: fcc78a076a5b743d8916038b48a6b0ee
Out4: ae03e817c0dc6048c19b708ce411a058294425b1

Genere cadenas aleatorias criptográficamente seguras en PHP

Este generador es la característica más importante y útil de PHP. Todos los generadores que discutiremos anteriormente no son criptográficamente seguros. Criptográficamente seguro significa que también puede generar una cadena aleatoria, pero es difícil para un tercero generar el mismo número aleatorio. Por eso podemos decirlo criptográficamente seguro.

random_bytes($length) es la función que puede generar una cadena aleatoria criptográficamente segura. El usuario especifica el parámetro de longitud. Vea el ejemplo a continuación.

<?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";
 
?>

Producción :

Output-1: 911fc716798ce464c7c3
Output-2: 182fedf65a90b66139d80dbfc0f82912b73f37cd
Output-3: c3408d3a0dea41251dce940fe550452ca180cf5effaad235

Como ha visto en el código anterior, hemos utilizado la función bin2hex(). Cuando random_bytes($length) da una salida específica, entonces bin2hex() la convierte en valores hexadecimales. Lo que puede duplicar el valor de la función random_bytes($length).

La función openssl_random_pseudo_bytes($length, &$crypto_strong) también se usa para generar cadenas criptográficamente al azar. El parámetro crypto_strong se utiliza para analizar si † la cadena se genera a partir de un algoritmo criptográficamente seguro o no.

Si queremos una cadena aleatoria criptográficamente segura que utilice todas las cadenas de la a a la z, usamos los siguientes códigos.

<?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";
 
?>

Producción :

Sec_Out_1: znxtaqynoi
Sec_Out_2: 10k10zkddntm
Sec_Out_3: ook8gfck6u

Especificamos la longitud de la cadena aleatoria en la función secure_random_string(). En esta función, usamos un bucle en el que random_int() genera enteros aleatorios del rango específico dado. Después de eso, convertimos el número entero de base 10 a 36 con la función base_convert(). Finalmente, nuestro carácter resultante es de cualquier dígito de 0-9 y cualquier carácter de a-z. Es una forma más de generar una cadena criptográfica aleatoria.

Artículo relacionado - PHP String