PHP 7.2.0 Release Candidate 4 Released

random_bytes

(PHP 7)

random_bytesGenerates cryptographically secure pseudo-random bytes

Description

string random_bytes ( int $length )

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é.
  • 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 Exception sera émise.

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.

Valeurs de retour

Returns 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 Exception sera émise.
  • Si un paramètre invalide est fourni, une exception de type TypeError sera émise.
  • If an invalid length of bytes is given, an Error will be thrown.

Exemples

Exemple #1 random_bytes() example

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

L'exemple ci-dessus va afficher quelque chose de similaire à :

string(10) "385e33f741"

Voir aussi

add a note add a note

User Contributed Notes 1 note

up
11
akam at akameng dot com
1 year ago
I used below function to create random token, and also a salt from the token. I used it in my application to prevent CSRF attack.

<?php
function RandomToken($length = 32){
    if(!isset(
$length) || intval($length) <= 8 ){
     
$length = 32;
    }
    if (
function_exists('random_bytes')) {
        return
bin2hex(random_bytes($length));
    }
    if (
function_exists('mcrypt_create_iv')) {
        return
bin2hex(mcrypt_create_iv($length, MCRYPT_DEV_URANDOM));
    }
    if (
function_exists('openssl_random_pseudo_bytes')) {
        return
bin2hex(openssl_random_pseudo_bytes($length));
    }
}

function
Salt(){
    return
substr(strtr(base64_encode(hex2bin(RandomToken(32))), '+', '.'), 0, 44);
}

echo (
RandomToken());
echo
"\n";
echo
Salt();
echo
"\n";

/*
This function is same as above but its only used for debugging
*/
function RandomTokenDebug($length = 32){
    if(!isset(
$length) || intval($length) <= 8 ){
     
$length = 32;
    }
   
$randoms = array();
    if (
function_exists('random_bytes')) {
       
$randoms['random_bytes'] = bin2hex(random_bytes($length));
    }
    if (
function_exists('mcrypt_create_iv')) {
       
$randoms['mcrypt_create_iv'] = bin2hex(mcrypt_create_iv($length, MCRYPT_DEV_URANDOM));
    }
    if (
function_exists('openssl_random_pseudo_bytes')) {
       
$randoms['openssl_random_pseudo_bytes'] = bin2hex(openssl_random_pseudo_bytes($length));
    }
   
    return
$randoms;
}
echo
"\n";
print_r (RandomTokenDebug());

?>
To Top