(PHP 7, PHP 8)
random_bytes — Obtiene bytes aleatorios criptográficamente seguros
Genera una cadena que contiene bytes seleccionados uniformemente de manera aleatoria con el valor de length.
Dado que los bytes devueltos se eligen completamente al azar, la cadena resultante probablemente contendrá caracteres no imprimibles o secuencias UTF-8 inválidas. Puede ser necesario codificarlos antes de la transmisión o visualización.
La aleatorización generada por esta función es adecuada para todas las aplicaciones, incluyendo la generación de secretos a largo plazo, como claves de cifrado.
Las fuentes de aleatoriedad por orden de prioridad son las siguientes:
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 si CCRandomGenerateBytes está disponible en el momento de la compilación): 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
Nota: Aunque esta función fue añadida en PHP 7.0, una » implementación en espacio de usuario está disponible para PHP 5.2 hasta 5.6, inclusive.
length
La longitud de la string aleatoria que debe ser devuelta en bytes; debe ser mayor o igual a 1.
Devuelve una string que contiene el número solicitado de bytes criptográficamente seguros.
length es menor que 1,
se lanzará una ValueError.
| Versión | Descripción |
|---|---|
| 8.2.0 | En caso de fallo CSPRNG, esta función lanzará ahora una Random\RandomException. Anteriormente se lanzaba una Exception básica. |
Ejemplo #1 Ejemplo con random_bytes()
<?php
$bytes = random_bytes(5);
var_dump(bin2hex($bytes));
?>Resultado del ejemplo anterior es similar a:
string(10) "385e33f741"