Класс Phalcon\Security\Random

Source on GitHub

Безопасный класс генератора случайных чисел.

Обеспечивает безопасный генератор случайных чисел, который подходит для генерации ключа сеанса в HTTP cookies и т. д.

Он поддерживает следующие безопасные генераторы случайных чисел :

  • random_bytes (PHP 7)
  • libsodium
  • openssl, libressl
  • /dev/urandom

Phalcon\\Security\\Random может быть полезно для:

  • Генерация ключей (например, генерация сложных ключей)
  • Генерация случайных паролей для новых учетных записей пользователей
  • Система шифрования
<?php

$random = new \Phalcon\Security\Random();

// Случайная двоичная строка
$bytes = $random->bytes();

// Случайная шестнадцатеричная строка
echo $random->hex(10); // a29f470508d5ccb8e289
echo $random->hex(10); // 533c2f08d5eee750e64a
echo $random->hex(11); // f362ef96cb9ffef150c9cd
echo $random->hex(12); // 95469d667475125208be45c4
echo $random->hex(13); // 05475e8af4a34f8f743ab48761

// Случайная строка base62
echo $random->base62(); // z0RkwHfh8ErDM1xw

// Случайная строка base64
echo $random->base64(12); // XfIN81jGGuKkcE1E
echo $random->base64(12); // 3rcq39QzGK9fUqh8
echo $random->base64();   // DRcfbngL/iOo9hGGvy1TcQ==
echo $random->base64(16); // SvdhPcIHDZFad838Bb0Swg==

// Случайный URL-безопасная строка base64
echo $random->base64Safe();           // PcV6jGbJ6vfVw7hfKIFDGA
echo $random->base64Safe();           // GD8JojhzSTrqX7Q8J6uug
echo $random->base64Safe(8);          // mGyy0evy3ok
echo $random->base64Safe(null, true); // DRrAgOFkS4rvRiVHFefcQ==

// Случайный UUID
echo $random->uuid(); // db082997-2572-4e2c-a046-5eefe97b1235
echo $random->uuid(); // da2aa0e2-b4d0-4e3c-99f5-f5ef62c57fe2
echo $random->uuid(); // 75e6b628-c562-4117-bb76-61c4153455a9
echo $random->uuid(); // dc446df1-0848-4d05-b501-4af3c220c13d

// Случайное число от 0 до $len
echo $random->number(256); // 84
echo $random->number(256); // 79
echo $random->number(100); // 29
echo $random->number(300); // 40

// Случайная строка base58
echo $random->base58();   // 4kUgL2pdQMSCQtjE
echo $random->base58();   // Umjxqf7ZPwh765yR
echo $random->base58(24); // qoXcgmw4A9dys26HaNEdCRj9
echo $random->base58(7);  // 774SJD3vgP

Этот класс частично заимствует библиотеку SecureRandom из Ruby

Методы

public bytes ([mixed $len])

Создает случайную двоичную строку метод Random::bytes возвращает строку и принимает в качестве входных данных значение int, представляющее длину возвращаемых байтов. Если $len не указан, предполагается 16. В будущем он может быть больше. Результат может содержать любой байт: "x00" - "xFF".

<?php

$random = new \Phalcon\Security\Random();

$bytes = $random->bytes();
var_dump(bin2hex($bytes));
// Possible output: string(32) "00f6c04b144b41fad6a59111c126e1ee"

public hex ([mixed $len])

Генерирует случайную шестнадцатеричную строку, если $len не указан, предполагается 16. В будущем он может быть больше. Длина результирующей строки обычно больше $len.

<?php

$random = new \Phalcon\Security\Random();

echo $random->hex(10); // a29f470508d5ccb8e289

public base58 ([mixed $len])

Генерирует случайную строку base58, если $len не указан, предполагается 16. В будущем он может быть больше. Результат может содержать буквенно-цифровые символы, за исключением 0, O, I и l. Он похож на Phalcon\\Security\\Random:base64 , но был изменен, чтобы избежать не алфавитно-цифровых символов и букв, которые могут выглядеть неоднозначно при печати.

<?php

$random = new \Phalcon\Security\Random();

echo $random->base58(); // 4kUgL2pdQMSCQtjE

public base62 ([mixed $len])

Генерирует случайную строку base62, если $len не указан, предполагается 16. В будущем он может быть больше. Он похож на Phalcon\\Security\\Random:base58 , но был изменен, чтобы обеспечить наибольшее значение, которое можно безопасно использовать в URL-адресах без необходимости принимать во внимание дополнительные символы, потому что это [A-Za-z0-9].

<?php

$random = new \Phalcon\Security\Random();

echo $random->base62(); // z0RkwHfh8ErDM1xw

public base64 ([mixed $len])

Генерирует случайную строку base64, если $len не указан, предполагается 16. В будущем он может быть больше. Длина результирующей строки обычно больше $len. Формула размера: 4 * ($len / 3), и это нужно округлить до кратного 4.

<?php

$random = new \Phalcon\Security\Random();

echo $random->base64(12); // 3rcq39QzGK9fUqh8

public base64Safe ([mixed $len], [mixed $padding])

Генерирует случайную URL-безопасную строку base64, если $len не указан, предполагается 16. В будущем он может быть больше. Длина результирующей строки обычно больше $len. По умолчанию заполнение не создается, так как " = " может использоваться в качестве разделителя URL-адреса. Результат может содержать A-Z, a-z, 0-9, " - " и "_". "="также используется, если $padding имеет значение true. См. RFC 3548 для определения безопасного для URL base64.

<?php

$random = new \Phalcon\Security\Random();

echo $random->base64Safe(); // GD8JojhzSTrqX7Q8J6uug

public uuid ()

Генерирует случайный UUID версии 4 (универсальный уникальный идентификатор) UUID версии 4 является чисто случайным (за исключением версии). Он не содержит значимой информации, такие как MAC-адрес, время и т. д. Подробные сведения о UUID см. В документе RFC 4122. Этот алгоритм устанавливает номер версии (4 бита), а также два зарезервированных бита. Все остальные биты (оставшиеся 122 бита) устанавливаются с помощью случайного или псевдослучайного источника данных. Версия 4 идентификаторы UUID имеет вид хххххххх-ХХХХ-4xxx-yxxx-ХХХХХХХХХХ, где X-это шестнадцатеричное число, а y-один из 8, 9, A или B (например, f47ac10b-58cc-4372-a567-0e02b2c3d479).

<?php

$random = new \Phalcon\Security\Random();

echo $random->uuid(); // 1378c906-64bb-4f81-a8d6-4ae1bfcdec22

public number (mixed $len)

Генерирует случайное число от 0 до $len возвращает целое число: 0 <= result <= $len.

<?php

$random = new \Phalcon\Security\Random();

echo $random->number(16); // 8

protected base (mixed $alphabet, mixed $base, [mixed $n])

Создает случайную строку на основе числа ($base) символов ($alphabet). Если $n не указан, предполагается 16. В будущем он может быть больше.