PHP Conference Nagoya 2025

OAuthProvider::generateToken

(PECL OAuth >= 1.0.0)

OAuthProvider::generateTokenГенерация случайного токена

Описание

final public static OAuthProvider::generateToken(int $size, bool $strong = false): string

Генерирует строку псевдо-случайных байт.

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

size

Длина токена в байтах.

strong

Установка в true приведёт к использованию /dev/random, в противном случае будет использован неблокирующий /dev/urandom. В Windows данный параметр будет проигнорирован.

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

Сгенерированный токен в виде строки байт.

Ошибки

Если параметр strong задан как true, то будет выдана ошибка уровня E_WARNING, в случае, если для заполнения оставшихся случайных байт (например, если было найдено недостаточно случайных данных) будет использована старая реализация rand()

Примеры

Пример #1 Пример использования OAuthProvider::generateToken()

<?php
$p
= new OAuthProvider();

$t = $p->generateToken(4);

echo
strlen($t), PHP_EOL;
echo
bin2hex($t), PHP_EOL;

?>

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

4
b6a82c27

Примечания

Замечание:

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

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

  • openssl_random_pseudo_bytes() - Генерирует псевдослучайную последовательность байт
  • mcrypt_create_iv() - Создаёт инициализирующий вектор (Initialization Vector или IV) из случайного источника
Добавить

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

up
0
carlosouza at me dot com
12 years ago
Be careful when setting the 'strong' parameter to true.

If you system doesn't have enough entropy your script will block which can cause timeouts in other parts of your code.

In my case, the most serious symptom was my script blocking when trying to read from /dev/random and causing a 'MySQL has gone away' error.

Hopefully this saves someone the trouble when deciding to use /dev/random entropy
To Top