Я хочу создать случайные ints и строки в PHP, поэтому я решил использовать mcrypt_create_iv. В руководстве написано, что он использует / dev / random и / dev / urandom для случайности, но я не могу найти простой учебник о том, как генерировать случайные Int и String, используя эту функцию. Я пробовал код, но эта функция дает мне нечитаемые символы. Поэтому, пожалуйста, вы можете дать мне простой пример того, как правильно я могу его использовать?
Если вы хотите генерировать случайные числа, используйте 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));
Во-первых, как вы хотите использовать случайные строки, для чего вы хотите их использовать? Если для генерирования солей для паролей вы можете использовать эту функцию для генерации более качественных случайных строк, чем генерируемых 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 для таких случаев.
rand (int $ min, int $ max) используют это для случайных чисел, а для строк берут хеш md5 или sha1 случайного числа;