random_bytes

(PHP 7, PHP 8)

random_bytesObtiene bytes aleatorios criptográficamente seguros

Descripción

random_bytes(int $length): string

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 empleadas por esta función son las siguientes:

  • En Windows, se utilizará siempre » CryptGenRandom(). A partir de PHP 7.2.0, se usará siempre » CNG-API.
  • En Linux, se utilizará la llamada al sistema » getrandom(2) si está disponible.
  • En otras plataformas, se utilizará /dev/urandom.
  • Si no están disponibles ninguna de las fuentes citadas anteriormente, se lanzará una Exception.

Nota: Aunque esta función se añadió a PHP en PHP 7.0, hay disponible una » implementación de espacio de usuario para PHP 5.2 hasta 5.6, inclusive.

Parámetros

length

La longitud de la string aleatoria que debe ser devuelta en bytes; debe ser mayor o igual a 1.

Valores devueltos

Devuelve una string que contiene el número solicitado de bytes criptográficamente seguros.

Errores/Excepciones

  • Si no se puede encontrar una fuente de aleatoriedad apropiada, se lanzará una Exception.
  • Si se proporcionan parámetros inválidos, se lanzará un TypeError.
  • Si el valor de length es menor que 1, se lanzará una ValueError.

Historial de cambios

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.

Ejemplos

Ejemplo #1 Ejemplo con random_bytes()

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

El resultado del ejemplo sería algo similar a:

string(10) "385e33f741"

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top