PHP 7 - CSPRNG

In PHP 7, vengono introdotte due nuove funzioni per generare interi e stringhe crittograficamente sicuri in modo multipiattaforma.

  • random_bytes() - Genera byte pseudo-casuali crittograficamente sicuri.

  • random_int() - Genera interi pseudo-casuali crittograficamente sicuri.

random_bytes ()

random_bytes () genera una stringa di lunghezza arbitraria di byte casuali crittografici che sono adatti per l'uso crittografico, come quando si generano sali, chiavi o vettori di inizializzazione.

Sintassi

string random_bytes ( int $length )

Parametri

  • length - La lunghezza della stringa casuale che deve essere restituita in byte.

Valori restituiti

  • Restituisce una stringa contenente il numero richiesto di byte casuali protetti crittograficamente.

Errori / eccezioni

  • Se non è possibile trovare una fonte appropriata di casualità, verrà generata un'eccezione.

  • Se vengono forniti parametri non validi, a TypeError sarà lanciato.

  • Se viene fornita una lunghezza di byte non valida, verrà generato un errore.

Esempio

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

Produce il seguente output del browser:

54cc305593

random_int ()

random_int() genera numeri interi casuali crittografici che sono adatti per l'uso dove i risultati imparziali sono fondamentali.

Sintassi

int random_int ( int $min , int $max )

Parametri

  • min - Il valore più basso da restituire, che deve essere PHP_INT_MIN o più alto.

  • max - Il valore più alto da restituire, che deve essere minore o uguale a PHP_INT_MAX.

Valori restituiti

  • Restituisce un numero intero casuale crittograficamente sicuro compreso tra il minimo e il massimo, inclusi.

Errori / eccezioni

  • Se non è possibile trovare una fonte appropriata di casualità, un file Exception sarà lanciato.

  • Se vengono forniti parametri non validi, a TypeError sarà lanciato.

  • Se max è minore di min, un Error sarà lanciato.

Esempio

<?php
   print(random_int(100, 999));
   print("");
   print(random_int(-1000, 0));
?>

Produce il seguente output del browser:

614
-882