Php сгенерировать случайную строку

How to Generate a Random String with PHP

In the framework of this snippet, we will explain several ways of generating a unique, random string with the help of PHP arsenal.

Using the Brute Force

The first way is using the brute force. It is the simplest method that can be achieved by following the steps below:

  1. Storing all the possible letters into strings.
  2. Generating a random index from 0 to the length of the string -1 .
  3. Printing the letter on the given index.
  4. Implementing the steps n times ( n is considered the length of the required string).
 $n = 10; function getRandomString($n) < $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $randomString = ''; for ($i = 0; $i < $n; $i++) < $index = rand(0, strlen($characters) - 1); $randomString .= $characters[$index]; > return $randomString; > echo getRandomString($n);

Applying Hashing Functions

In PHP, there are several functions such as md5() , sha1() , and hash() that might be applied for hashing a string based on exact algorithms such as “sha1”, “sha256”, “md5”, and so on.

All of these functions are capable of taking a string as an argument and output an Alpha-Numeric hashed string.

After understanding how to utilize the functions, the next steps become simpler:

  1. Generating a random number with the rand() function.
  2. Hashing it with one of the functions above.
 $str = rand(); $result = md5($str); echo $result; ?>

The output will look like this:

2e437510c181dd2ae100fc1661a445d4

Applying the Uniqid() Function

This is an inbuilt function that is applied for generating a unique ID built on the current time in microseconds. It returns a 13-character long unique string, by default.

The example is demonstrated below:

 $result = uniqid(); echo $result; ?>

The first output is the following:

Please, take into consideration that all the methods above are based on rand() and uniqid() functions. However, they are not considered cryptographically secure random generators.

Using Random_bytes() Function ( The Most Secured)

If you want to generate cryptographically secure pseudo random bytes that can be converted into a hexadecimal format with the bin2hex() function, then you should use the random_bytes function.

 $n = 20; $result = bin2hex(random_bytes($n)); echo $result; ?>
235aed08a01468f90fa726bd56319fb893967da8
508b84494cdf31bec01566d12a924c75d4baed39

So, in this snippet, we represented several ways to generate a random string with PHP. Learning them will make your work easier and more productive.

Источник

Генерация случайных буквенно-цифровых строк в PHP

Monty Shokeen

Monty Shokeen Last updated Nov 23, 2020

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

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

В этом уроке мы рассмотрим различные методы генерации случайных чисел и буквенно-цифровых строк в PHP. Некоторые из них будут криптографически безопасны, а другие предназначены только для случайного использования, например, назначение псевдослучайных имен файлов или создание URL-адресов и предложение имен пользователей.

Создание случайных чисел в PHP

Существуют три различные функции для генерации случайных чисел в PHP. Все они будут принимать минимальное и максимально возможное значение для случайных чисел и выдавать случайное число для вас. Это rand($min, $max) , mt_rand($min, $max) и random_int($min, $max) .

С rand() минимальные и максимальные значения целых чисел, которые вы можете генерировать, лежат между 0 и значением, возвращаемым функцией getrandmax() . До PHP 7.1.0 эта функция была примерно в четыре раза медленнее, чем mt_rand() . Однако, начиная с PHP 7.1.0, она была создана как псевдоним mt_rand() . В отличие от mt_rand() , вы можете установить значение $max меньше, чем $min , не вызывая ошибки.

С mt_rand() минимальные и максимальные значения целых чисел, которые вы можете генерировать, лежат между 0 и значением, возвращаемым mt_getrandmax() . Функция использует реализацию Mersenne Twister для генерации случайных чисел. Остерегайтесь, до PHP 7.1.0, эта функция реализовывала неверную версию алгоритма для генерации чисел. Однако он был исправлен в более новых версиях.

Функция стала еще лучше в PHP 7.2.0, избавившись от ошибки модульного смещения. Это означает, что для некоторых конкретных значений ваша последовательность случайных чисел теперь будет немного лучше по сравнению со старыми версиями. Однако какой-то специализированный код может действительно полагаться на эту предвзятость. Если это так, вы можете использовать более старый алгоритм, вызвав функцию mt_srand() для задания начального числа для генератора случайных чисел и передачи MT_RAND_PHP в качестве значения второго параметра.

Функция mt_rand() имеет период 2 19937 -1, что в основном означает, что в наилучших сценариях вы получаете целых 2 19937 -1 случайных чисел до того, как последовательность начнет повторяться. Следует отметить, что повторение последовательности не совпадает с повторением определенного числа. Другими словами, вы можете получить одно и то же случайное число дважды, но это не значит, что сама последовательность начала повторяться. Примером может служить следующая последовательность:

187 3276 1267 15 1267 34598 3467 125 17

В приведенной выше последовательности у нас было 1267 два раза на выходе, но это не означает, что после этого вся последовательность начала повторяться. Маловероятно, чтобы такое же число повторялось так быстро в случайной последовательности, но это возможно!

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

Если вы хотите криптографически безопасные псевдослучайные числа, функция random_int() в PHP — ваш лучший выбор. Он будет генерировать случайные числа между предоставленными значениями $min и $max , которые по умолчанию соответствуют PHP_INT_MIN и PHP_INT_MAX . К сожалению, эта функция доступна только с PHP 7.0. Для версий до этого вы можете использовать этот полифилл на GitHub.

Случайные числа с плавающей точкой

Вместо генерации случайных целых чисел вы также можете генерировать числа с плавающей точкой. Это можно сделать легко, просто разделив случайное число на значение, возвращаемое mt_getrandmax() . В следующем примере будет проиллюстрировано, как создать случайное значение с плавающей точкой от 0 до 1 или между любыми другими минимальными и максимальными пределами.

Источник

Генерация случайной строки в PHP

В этой статье показано, как сгенерировать случайную строку в PHP.

1. Использование random_bytes() функция

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

Функции CSPRNG random_bytes() а также random_int() были добавлены в PHP в версии 7.0. Эти функции можно использовать в криптографических целях, например для генерации случайных векторов инициализации и солт-значений. Если вы все еще используете PHP 5.x, вот PHP 5 polyfill для этих функций.

2. Использование openssl_random_pseudo_bytes() функция

До PHP 7.0 вы также можете использовать openssl_random_pseudo_bytes() функция для генерации псевдослучайной строки байтов указанной длины. Он использует криптографически стойкий алгоритм для создания псевдослучайных байтов. Начиная с PHP 7.4.0, эта функция выдает исключение в случае сбоя.

3. Использование random_int() функция

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

Вот пример того, как вы можете этого добиться. Он генерирует случайную буквенно-цифровую строку ASCII, используя диапазон, состоящий из прописных и строчных букв и цифр. Как уже упоминалось ранее, random_int() Функция была представлена в PHP 7 и использует криптографически безопасный генератор псевдослучайных чисел (CSPRNG).

Источник

Читайте также:  Как найти нок чисел питон
Оцените статью