Genera stringa casuale in PHP

Muhammad Abubakar 22 giugno 2021
  1. Genera stringa casuale in PHP
  2. Genera una stringa casuale con la funzione uniqid()
  3. Genera una stringa casuale con la funzione str_shuffle($string) in PHP
  4. Genera stringhe esadecimali casuali in PHP
  5. Genera stringhe casuali crittograficamente sicure in PHP
Genera stringa casuale in PHP

In questo articolo del tutorial, discuteremo come generare la stringa casuale in PHP.

Genera stringa casuale in PHP

definiremo la funzione generatore di stringhe casuali in 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)
?>

Produzione:

Random string =ExmIixDb

Non è necessario prendere solo alfabeti nella variabile dichiarata; puoi anche aggiungere valori numerici, simboli, ecc., qualsiasi cosa tu voglia nella tua stringa generata in modo casuale.

Nella quarta riga, prendiamo la lunghezza della variabile dichiarata usando la funzione strlen(). Aiuta rand( 0, $var_size - 1 ) a generare un indice dallo specifico intervallo dato e quindi ad aggiungere quel valore alla variabile appena creata e il bucle aiuta rand( 0, $var_size - 1 ) a generare una lunghezza specifica di stringa.

Genera una stringa casuale con la funzione uniqid()

Questo è un altro modo per la generazione di stringhe casuali utilizzando la funzione incorporata uniqid(). Genera l’identificatore univoco lungo 13 caratteri, che si basa sul timestamp corrente. Ecco la soluzione:

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

Produzione:

Random String:606208975a59f

La funzione uniqid() accetta anche parametri che possono aumentare l’unicità della stringa o dell’identificatore. Ti dà un valore più descritto. Ecco alcune delle sue soluzioni:

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

Produzione:

user_60620a2b23235 

Genera una stringa casuale con la funzione str_shuffle($string) in PHP

str_shuffle($string) è la funzione incorporata, che funziona come una funzione di generatore di stringhe casuali come abbiamo visto sopra che usiamo un bucle e la funzione incorporata rand() per generare una stringa casuale, ma è anche diverso. Usiamo solo la funzione incorporata per generare una stringa univoca che può aiutarci a formare una password univoca della lunghezza richiesta specificando l’intervallo 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";
?>

Produzione:

Gen_rand_str: b38aenwpkh
Gen_My_Pass: hello.EUMm4TB26CltW8qYnApF.World

Può anche aiutarci a generare URL, nomi di file casuali e.t.c. È più sicuro del generatore di cui sopra e complesso nella previsione.

Questo metodo è più preciso ma presenta alcuni problemi in quanto non può fornire gli stessi caratteri nella stringa casuale due volte e l’output casuale è lungo quanto si fornisce la stringa di input.

Genera stringhe esadecimali casuali in PHP

Le funzioni md5($string, $raw_output) e sha1($string,$raw_output) ci aiutano a generare stringhe esadecimali casuali. In queste funzioni, usiamo time() come input per ottenere l’output, e se vogliamo una stringa esadecimale di 32 caratteri, allora usiamo md5(), e per 40 caratteri, usiamo sha1(). Infine, possiamo anche estrarre una stringa casuale della nostra lunghezza specificata dalla funzione 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";
 
?>

Produzione:

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

Genera stringhe casuali crittograficamente sicure in PHP

Questo generatore è la caratteristica più importante e utile di PHP. Tutti i generatori di cui parleremo sopra non sono crittograficamente sicuri. Crittograficamente sicuro significa che può anche generare una stringa casuale, ma è difficile per una terza parte generare lo stesso numero casuale. Ecco perché possiamo dirlo crittograficamente sicuro.

random_bytes($length) è la funzione che può generare una stringa casuale crittograficamente sicura. L’utente specifica il parametro di lunghezza. Vedi l’esempio sotto.

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

Produzione:

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

Come hai visto nel codice sopra, abbiamo usato la funzione bin2hex(). Quando random_bytes($length) fornisce un output specifico, allora bin2hex() lo converte in valori esadecimali. Che potrebbe raddoppiare il valore della funzione random_bytes($length)

La funzione openssl_random_pseudo_bytes($length, &$crypto_strong) è anche usata per generare stringhe crittograficamente casuali. Il parametro crypto_strong viene utilizzato per analizzare che † la stringa è generata da un algoritmo crittograficamente sicuro o meno.

Se vogliamo una stringa casuale crittograficamente sicura che utilizzi tutte le stringhe dalla a alla z, utilizziamo i seguenti codici.

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

Produzione:

Sec_Out_1: znxtaqynoi
Sec_Out_2: 10k10zkddntm
Sec_Out_3: ook8gfck6u

Specifichiamo la lunghezza della stringa casuale nella funzione secure_random_string(). In questa funzione, usiamo un bucle in cui random_int() genera numeri interi casuali dall’intervallo specifico dato. Dopo di ciò, convertiamo l’intero da base 10 a 36 con la funzione base_convert(). Alla fine, il nostro carattere risultante proviene da qualsiasi cifra da 0 a 9 e da qualsiasi carattere da a-z. È un altro modo per generare una stringa crittografica casuale.

Articolo correlato - PHP String