php используя mcrypt_create_iv - PullRequest
       10

php используя mcrypt_create_iv

1 голос
/ 25 февраля 2012

Я хочу создать случайные целые числа и строки в PHP, поэтому я решил использовать mcrypt_create_iv.В руководстве написано, что он использует / dev / random и / dev / urandom для случайности, но я не могу найти простое руководство о том, как генерировать случайные Int и String с использованием этой функции.Я попробовал некоторый код, но эта функция дает мне нечитаемые символы.Поэтому, пожалуйста, не могли бы вы дать мне простой пример того, как правильно я могу его использовать?

Ответы [ 3 ]

7 голосов
/ 26 марта 2012

Во-первых, как вы хотите использовать случайные строки, для чего вы хотите их использовать? Если это для генерации солей для паролей, вы можете использовать эту функцию, чтобы генерировать случайные строки лучше, чем те, что генерируются uniqid () или mt_rand (). См. Безопасное хеширование пароля и посмотрите код ниже о том, как сгенерировать случайную строку с помощью mcrypt_create_iv ()). Если вам нужны строки для идентификации пользователя, почему бы не попробовать UUID . Использование mcrypt_create_iv само по себе просто генерирует нечитаемые символы. Чтобы "преобразовать" эти нечитаемые символы в нечто читаемое, используйте функцию bin2hex, например, такую:

$random_string = bin2hex(mcrypt_create_iv(30, [MCRYPT_DEV_RANDOM|MCRYPT_DEV_URANDOM|MCRYPT_RAND]));

«30» - это размер вектора инициализации, который вы хотите получить. Помните, что использование MCRYPT_DEV_URANDOM и MCRYPT_DEV_RANDOM на машинах Windows с версиями PHP старше, чем версия 5.3.0, не будет работать. Вместо этого используйте MCRYPT_RAND для таких случаев.

5 голосов
/ 25 февраля 2012

Если вы хотите сгенерировать случайные числа, используйте mt_rand:

$random = mt_rand(0, 999999);

Если вы хотите получить строку, вы можете передать полученное целое число через хеш-функцию:

$random = mt_rand(0, 999999);
$random_string = sha1($random);

mcrypt_create_iv используется в криптографии.Это совершенно не связано с вашим требованием.

Если вы хотите использовать случайную строку в компонентах безопасности (соли, пароли и т. Д.), Прочитайте из /dev/urandom примерно так:

$random = file_get_contents('/dev/urandom', false, null, 0, 10);

... где 10 - длина, затем конвертируйте так:

$string = bin2hex($random);
$number = current(unpack('L', $random));
0 голосов
/ 25 февраля 2012

rand (int $ min, int $ max) используйте это для случайных чисел, а для строк возьмите хэш md5 или sha1 случайного числа;

...