random_bytes

(PHP 7, PHP 8)

random_bytesRécupère des octets aléatoires cryptographiquement sécurisés

Description

random_bytes(int $length): string

Génère une chaîne de caractères de longueur arbitraire d'octets aléatoires cryptographiques qui convient à un usage cryptographique, comme lors de la génération de sels, de clés ou de vecteurs d'initialisation.

La source des données aléatoires utilisée pour cette fonction est :

  • Sous Windows, » CryptGenRandom() sera toujours utilisé. À partir de PHP 7.2.0 c'est » CNG-API qui sera toujours utilisé à la place
  • Sous Linux, l'appel système » getrandom(2) sera utilisé si disponible.
  • Sous les autres plate-formes, /dev/urandom sera utilisé.
  • Si tout ce qui précède n'est pas disponible, alors une Random\RandomException sera lancée.

Note: Bien que cette fonction ait été ajoutée en PHP 7.0, une » implementation en espace utilisateur est disponible pour PHP 5.2 jusqu'à 5.6, inclus.

Liste de paramètres

length

La longueur de la chaîne de caractères aléatoire qui doit être retourné en octets; doit être supérieur ou égal à 1.

Valeurs de retour

Retourne une chaîne de caractères contenant le nombre demandé d'octets cryptographiquement sécurisés.

Erreurs / Exceptions

  • Si aucune source de données aléatoires n'est trouvée, une Random\RandomException sera lancée.
  • Si la valeur de length est inférieure à 1, une ValueError sera lancée.

Historique

Version Description
8.2.0 En cas d'échec CSPRNG, cette fonction lancera désormais une Random\RandomException. Auparavant une Exception basique était lancé.

Exemples

Exemple #1 Exemple avec random_bytes()

<?php
$bytes
= random_bytes(5);
var_dump(bin2hex($bytes));
?>

Résultat de l'exemple ci-dessus est similaire à :

string(10) "385e33f741"

Voir aussi

add a note

User Contributed Notes 1 note

up
5
ccbsschucko at gmail dot com
4 years ago
<?php
   
function str_rand(int $length = 64){ // 64 = 32
       
$length = ($length < 4) ? 4 : $length;
        return
bin2hex(random_bytes(($length-($length%2))/2));
    }
   
   
var_dump(str_rand());
   
// d6199909d0b5fdc22c9db625e4edf0d6da2b113b21878cde19e96f4afe69e714
?>
To Top