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