PHP 8.5.0 Beta 3 available for testing

random_bytes

(PHP 7, PHP 8)

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

Описание

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
Добавить

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

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