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