PHP 7 - CSPRNG
En PHP 7, se introducen las siguientes dos funciones nuevas para generar enteros y cadenas criptográficamente seguros de forma multiplataforma.
random_bytes() - Genera bytes pseudoaleatorios criptográficamente seguros.
random_int() - Genera enteros pseudoaleatorios criptográficamente seguros.
bytes_aleatorios ()
random_bytes () genera una cadena de longitud arbitraria de bytes aleatorios criptográficos que son adecuados para uso criptográfico, como cuando se generan sales, claves o vectores de inicialización.
Sintaxis
string random_bytes ( int $length )
Parámetros
length - La longitud de la cadena aleatoria que debe devolverse en bytes.
Valores devueltos
Devuelve una cadena que contiene el número solicitado de bytes aleatorios criptográficamente seguros.
Errores / Excepciones
Si no se puede encontrar una fuente apropiada de aleatoriedad, se lanzará una excepción.
Si se dan parámetros no válidos, TypeError será arrojado.
Si se proporciona una longitud de bytes no válida, se lanzará un error.
Ejemplo
<?php
$bytes = random_bytes(5);
print(bin2hex($bytes));
?>
Produce la siguiente salida del navegador:
54cc305593
random_int ()
random_int() genera números enteros aleatorios criptográficos que son adecuados para su uso donde los resultados no sesgados son críticos.
Sintaxis
int random_int ( int $min , int $max )
Parámetros
min - El valor más bajo a devolver, que debe ser PHP_INT_MIN o mas alto.
max - El valor más alto que se devolverá, que debe ser menor o igual que PHP_INT_MAX.
Valores devueltos
Devuelve un entero aleatorio criptográficamente seguro en el rango de mínimo a máximo, inclusive.
Errores / Excepciones
Si no se puede encontrar una fuente apropiada de aleatoriedad, una Exception será arrojado.
Si se dan parámetros no válidos, TypeError será arrojado.
Si max es menor que min, un Error será arrojado.
Ejemplo
<?php
print(random_int(100, 999));
print("");
print(random_int(-1000, 0));
?>
Produce la siguiente salida del navegador:
614
-882