PHP 7 - CSPRNG
Dans PHP 7, les deux nouvelles fonctions suivantes sont introduites pour générer des entiers et des chaînes cryptographiquement sécurisés de manière multiplateforme.
random_bytes() - Génère des octets pseudo-aléatoires cryptographiquement sécurisés.
random_int() - Génère des entiers pseudo-aléatoires sécurisés par cryptographie.
random_bytes ()
random_bytes () génère une chaîne de longueur arbitraire d'octets aléatoires cryptographiques adaptés à une utilisation cryptographique, par exemple lors de la génération de sels, de clés ou de vecteurs d'initialisation.
Syntaxe
string random_bytes ( int $length )
Paramètres
length - La longueur de la chaîne aléatoire qui doit être renvoyée en octets.
Valeurs de retour
Renvoie une chaîne contenant le nombre demandé d'octets aléatoires sécurisés par cryptographie.
Erreurs / exceptions
Si une source appropriée d'aléatoire ne peut être trouvée, une exception sera lancée.
Si des paramètres invalides sont donnés, un TypeError sera jeté.
Si une longueur non valide d'octets est donnée, une erreur sera renvoyée.
Exemple
<?php
$bytes = random_bytes(5);
print(bin2hex($bytes));
?>
Il produit la sortie de navigateur suivante -
54cc305593
random_int ()
random_int() génère des entiers aléatoires cryptographiques qui conviennent à une utilisation lorsque des résultats non biaisés sont essentiels.
Syntaxe
int random_int ( int $min , int $max )
Paramètres
min - La valeur la plus basse à renvoyer, qui doit être PHP_INT_MIN ou plus.
max - La valeur la plus élevée à renvoyer, qui doit être inférieure ou égale à PHP_INT_MAX.
Valeurs de retour
Renvoie un entier aléatoire sécurisé cryptographiquement compris entre min et max, inclus.
Erreurs / exceptions
Si une source appropriée d'aléatoire ne peut être trouvée, un Exception sera jeté.
Si des paramètres invalides sont donnés, un TypeError sera jeté.
Si max est inférieur à min, un Error sera jeté.
Exemple
<?php
print(random_int(100, 999));
print("");
print(random_int(-1000, 0));
?>
Il produit la sortie de navigateur suivante -
614
-882