PHP 8.6.0 Beta 1 is available for testing

random_bytes

(PHP 7, PHP 8)

random_bytesГенерирует криптографически безопасные случайные байты

Описание

function random_bytes(int $length): string

Функция генерирует строку, которая содержит равномерно выбранные случайные байты. Длину строки определяет параметр length.

Функция выбирает байты случайно, поэтому с большей вероятностью вернёт строку с непечатаемыми символами или недопустимой последовательностью байтов, которую невозможно сопоставить ни с одним символом в кодировке UTF-8. В ряде сценариев перед передачей или выводом двоичную строку потребуется закодировать.

Случайные последовательности, которые генерирует функция, применяют для шифрования и защиты данных: как ключи шифрования, токены доступа, соль для хеширования паролей и другие долгосрочные или временные криптографические параметры.

Источники случайных величин в порядке приоритета:

  • Linux: » getrandom(), /dev/urandom
  • FreeBSD >= 12 (PHP >= 7.3): » getrandom(), /dev/urandom
  • Windows (PHP >= 7.2): » CNG-API Windows: » CryptGenRandom
  • macOS (PHP >= 8.2; >= 8.1.9; >= 8.0.22, если CCRandomGenerateBytes доступен во время компиляции): CCRandomGenerateBytes() macOS (PHP >= 8.1; >= 8.0.2): arc4random_buf(), /dev/urandom
  • NetBSD >= 7 (PHP >= 7.1; >= 7.0.1): arc4random_buf(), /dev/urandom
  • OpenBSD >= 5.5 (PHP >= 7.1; >= 7.0.1): arc4random_buf(), /dev/urandom
  • DragonflyBSD (PHP >= 8.1): » getrandom(), /dev/urandom
  • Solaris (PHP >= 8.1): » getrandom(), /dev/urandom
  • Остальные комбинации операционной системы и версии PHP: /dev/urandom
  • Функция выбросит исключение Random\RandomException , если все источники оказались недоступны или в каждом возникла ошибка генерации случайной последовательности.

Замечание: Функцию добавили в PHP 7.0. » Пользовательская реализация функции доступна с PHP 5.2 по PHP 5.6 включительно.

Список параметров

length

Длина генерируемой строки в байтах. При передаче значения меньше 1 функция выдаст ошибку.

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

Функция возвращает строку, которая содержит заданное количество криптографически стойких байтов.

Ошибки

  • При недоступности источников случайных величин выбрасывается исключение Random\RandomException .
  • При передаче в параметр length значения меньше 1 функция выбросит ошибку ValueError .

Список изменений

Версия Описание
8.2.0 При сбое генератора криптографически безопасных псевдослучайных чисел (англ. Cryptographically Secure Pseudorandom Number Generator, CSPRNG) функция теперь выбрасывает исключение Random\RandomException . Раньше функция выбрасывала исключение Exception .

Примеры

Пример #1 Пример генерации криптографически безопасных случайных байтов функцией random_bytes()

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

Вывод приведённого примера будет похож на:

string(10) "385e33f741"

Смотрите также

  • Random\Randomizer::getBytes() - Получает случайные байты
  • random_int() - Получает криптографически безопасное равномерно выбранное целое число
  • bin2hex() - Преобразовывает двоичные данные в шестнадцатеричное представление
  • base64_encode() - Кодирует данные в формат MIME base64

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы

AltStyle によって変換されたページ (->オリジナル) /