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.

The sources of randomness used for this function are as follows:

Note: Although this function was added to PHP in PHP 7.0, a » userland implementation is available for PHP 5.2 to 5.6, inclusive.

Parameters

length

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

Return Values

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

Errors/Exceptions

  • If an appropriate source of randomness cannot be found, a Random\RandomException will be thrown.
  • If the value of length is less than 1, a ValueError will be thrown.

Changelog

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.

Examples

Example #1 random_bytes() example

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

The above example will output something similar to:

string(10) "385e33f741"

See Also

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