Générer une chaîne aléatoire en PHP

Muhammad Abubakar 30 janvier 2023
  1. Générer une chaîne aléatoire en PHP
  2. Générer une chaîne aléatoire avec la fonction uniqid()
  3. Générer une chaîne aléatoire avec la fonction str_shuffle($string) en PHP
  4. Générer des chaînes hexadécimales aléatoires en PHP
  5. Générer des chaînes aléatoires cryptographiquement sécurisées en PHP
Générer une chaîne aléatoire en PHP

Dans cet article du didacticiel, nous verrons comment générer la chaîne aléatoire en PHP.

Générer une chaîne aléatoire en PHP

nous allons définir la fonction de générateur de chaînes aléatoires 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)
?>

Production:

Random string =ExmIixDb

Il n’est pas nécessaire de prendre uniquement des alphabets dans la variable déclarée; vous pouvez également ajouter des chiffres, des symboles, etc., tout ce que vous voulez dans votre chaîne de génération aléatoire.

Dans la quatrième ligne, nous prenons la longueur de la variable déclarée en utilisant la fonction strlen(). Cela aide rand( 0, $var_size - 1 ) à générer un index à partir de la plage spécifique donnée, puis à ajouter cette valeur à la variable nouvellement créée et la boucle aide le rand( 0, $var_size - 1 ) à générer une longueur spécifique de ficelle.

Générer une chaîne aléatoire avec la fonction uniqid()

C’est une autre façon de générer une chaîne aléatoire en utilisant la fonction intégrée uniqid(). Il génère l’identifiant unique de 13 caractères, basé sur l’horodatage actuel. Voici la solution:

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

Production:

Random String:606208975a59f

La fonction uniqid() accepte également des paramètres qui peuvent augmenter l’unicité de la chaîne ou de l’identifiant. Cela vous donne une valeur plus décrite. Voici quelques-unes de ses solutions:

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

Production:

user_60620a2b23235 

Générer une chaîne aléatoire avec la fonction str_shuffle($string) en PHP

str_shuffle($string) est la fonction intégrée, qui fonctionne comme une fonction de générateur de chaîne aléatoire comme nous l’avons vu ci-dessus que nous utilisons une boucle et la fonction intégrée rand() pour générer une chaîne aléatoire, mais c’est aussi différent. Nous utilisons uniquement la fonction intégrée pour générer une chaîne unique qui peut nous aider à former un mot de passe unique de votre longueur exigeante en spécifiant la plage à (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";
?>

Production:

Gen_rand_str: b38aenwpkh
Gen_My_Pass: hello.EUMm4TB26CltW8qYnApF.World

Cela peut également nous aider à générer des URL, des noms de fichiers aléatoires e.t.c. Il est plus sûr que le générateur ci-dessus et complexe à prévoir.

Cette méthode est plus précise mais présente quelques problèmes comme elle ne peut pas donner les mêmes caractères dans votre chaîne aléatoire deux fois et la sortie aléatoire est longue que vous donnez la chaîne d’entrée.

Générer des chaînes hexadécimales aléatoires en PHP

Les fonctions md5($string, $raw_output) et sha1($string,$raw_output) nous aident à générer une chaîne hexadécimale aléatoire. Dans ces fonctions, nous utilisons time() comme entrée pour obtenir la sortie, et si nous voulons une chaîne hexadécimale de 32 caractères, alors nous utilisons md5(), et pour 40 caractères, nous utilisons sha1(). Enfin, nous pouvons également extraire une chaîne aléatoire de la longueur spécifiée par la fonction 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";
 
?>

Production:

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

Générer des chaînes aléatoires cryptographiquement sécurisées en PHP

Ce générateur est la fonctionnalité la plus importante et la plus utile de PHP. Tous les générateurs dont nous parlerons ci-dessus ne sont pas sécurisés par cryptographie. Cryptographiquement sécurisé signifie qu’il peut également générer une chaîne aléatoire, mais il est difficile pour un tiers de générer le même nombre aléatoire. C’est pourquoi nous pouvons dire qu’il est cryptographiquement sécurisé.

random_bytes($length) est la fonction qui peut générer une chaîne aléatoire sécurisée par cryptographie. L’utilisateur spécifie le paramètre de longueur. Voir l’exemple ci-dessous.

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

Production:

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

Comme vous l’avez vu dans le code ci-dessus, nous avons utilisé la fonction bin2hex(). Lorsque random_bytes($length) donne une sortie spécifique, alors bin2hex() la convertit en valeurs hexadécimales. Ce qui peut doubler la valeur de la fonction random_bytes($length).

La fonction openssl_random_pseudo_bytes($length, &$crypto_strong) est également utilisée pour générer une chaîne cryptographique aléatoire. Le paramètre crypto_strong est utilisé pour analyser que † la chaîne est générée à partir d’un algorithme cryptographiquement sécurisé ou non.

Si nous voulons une chaîne aléatoire sécurisée par cryptographie qui utilise toutes les chaînes de a à z, nous utilisons les codes ci-dessous.

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

Production:

Sec_Out_1: znxtaqynoi
Sec_Out_2: 10k10zkddntm
Sec_Out_3: ook8gfck6u

Nous spécifions la longueur de la chaîne aléatoire dans la fonction secure_random_string(). Dans cette fonction, nous utilisons une boucle dans laquelle random_int() génère des entiers aléatoires à partir de la plage spécifique donnée. Ensuite, nous convertissons l’entier de la base 10 à 36 avec la fonction base_convert(). Finalement, notre caractère résultant est de n’importe quel chiffre de 0 à 9 et de n’importe quel caractère de a-z. C’est une autre façon de générer une chaîne cryptographique aléatoire.

Article connexe - PHP String