random_bytes

(PHP 7, PHP 8)

random_bytesGet cryptographically secure random bytes

Description

random_bytes(int $length): string

Generates an arbitrary length string of cryptographic random bytes that are suitable for cryptographic use, such as when generating salts, keys or initialization vectors.

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

The length of the random string that should be returned in bytes; must be 1 or greater.

Valeurs de retour

A string containing the requested number of cryptographically secure random bytes.

Erreurs / Exceptions

  • Si aucune source de données aléatoires n'est trouvée, une Random\RandomException sera lancée.
  • If the value of length is less than 1, a ValueError will be thrown.

Historique

Version Description
8.2.0 In case of a CSPRNG failure, this function will now throw a Random\RandomException. Previously a plain Exception was thrown.

Exemples

Exemple #1 random_bytes() example

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