PHP 7 - CSPRNG

В PHP 7 представлены две новые функции для генерации криптографически безопасных целых чисел и строк кроссплатформенным способом.

  • random_bytes() - Генерирует криптографически безопасные псевдослучайные байты.

  • random_int() - Генерирует криптографически безопасные псевдослучайные целые числа.

random_bytes ()

random_bytes () генерирует строку произвольной длины криптографических случайных байтов, которые подходят для криптографического использования, например, при генерации солей, ключей или векторов инициализации.

Синтаксис

string random_bytes ( int $length )

Параметры

  • length - Длина возвращаемой случайной строки в байтах.

Возвращаемые значения

  • Возвращает строку, содержащую запрошенное количество криптографически безопасных случайных байтов.

Ошибки / исключения

  • Если соответствующий источник случайности не может быть найден, будет сгенерировано исключение.

  • Если указаны недопустимые параметры, TypeError будет брошен.

  • Если указана недопустимая длина байтов, будет выдана ошибка.

пример

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

Он производит следующий вывод браузера -

54cc305593

random_int ()

random_int() генерирует криптографические случайные целые числа, подходящие для использования там, где критичны объективные результаты.

Синтаксис

int random_int ( int $min , int $max )

Параметры

  • min - Наименьшее возвращаемое значение, которое должно быть PHP_INT_MIN или выше.

  • max - Наибольшее возвращаемое значение, которое должно быть меньше или равно PHP_INT_MAX.

Возвращаемые значения

  • Возвращает криптографически безопасное случайное целое число в диапазоне от min до max включительно.

Ошибки / исключения

  • Если соответствующий источник случайности не может быть найден, Exception будет брошен.

  • Если указаны недопустимые параметры, TypeError будет брошен.

  • Если max меньше min, Error будет брошен.

пример

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

Он производит следующий вывод браузера -

614
-882