(PHP 7, PHP 8)
random_bytes — Get cryptographically secure random bytes
Generates a string containing uniformly selected random bytes with the requested length.
As the returned bytes are selected completely randomly, the resulting string is likely to contain unprintable characters or invalid UTF-8 sequences. It may be necessary to encode it before transmission or display.
The randomness generated by this function is suitable for all applications, including the generation of long-term secrets, such as encryption keys.
Die Zufallsquellen in der Reihenfolge ihrer Priorität sind folgende:
Linux: » getrandom(), /dev/urandom
FreeBSD >= 12 (PHP >= 7.3): » getrandom(), /dev/urandom
Windows (PHP >= 7.2): » CNG-API
Windows: » CryptGenRandom
macOS (PHP >= 8.2; >= 8.1.9; >= 8.0.22 wenn CCRandomGenerateBytes bei der Kompilierung verfügbar ist): CCRandomGenerateBytes()
macOS (PHP >= 8.1; >= 8.0.2): arc4random_buf(), /dev/urandom
NetBSD >= 7 (PHP >= 7.1; >= 7.0.1): arc4random_buf(), /dev/urandom
OpenBSD >= 5.5 (PHP >= 7.1; >= 7.0.1): arc4random_buf(), /dev/urandom
DragonflyBSD (PHP >= 8.1): » getrandom(), /dev/urandom
Solaris (PHP >= 8.1): » getrandom(), /dev/urandom
Jede beliebige Kombination von Betriebssystem und PHP-Version, die oben nicht erwähnt wurde: /dev/urandom
Wenn keine der Quellen verfügbar ist oder keine davon Zufälligkeit erzeugen kann, wird eine Random\RandomException ausgelöst.
Hinweis:
Obwohl diese Funktion erst mit PHP 7.0.0 in PHP hinzugefügt wurde, gibt es » Userland-Implementierungen für PHP 5.2 bis einschließlich 5.6.
length
The length of the random string that should be returned in bytes; must be 1 or greater.
A string containing the requested number of cryptographically secure random bytes.
Wenn keine angemessene Quelle für Zufallszahlen verfügbar ist, wird eine Random\RandomException geworfen.
If the value of length is less than 1,
a ValueError will be thrown.
| Version | Beschreibung |
|---|---|
| 8.2.0 | In case of a CSPRNG failure, this function will now throw a Random\RandomException. Previously a plain Exception was thrown. |
Beispiel #1 random_bytes() example
<?php
$bytes = random_bytes(5);
var_dump(bin2hex($bytes));
?>Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
string(10) "385e33f741"