php using mcrypt_create_iv



我想在PHP中创建一个随机的int和字符串,所以我决定使用mcrypt_create_iv。手册中写道,它使用/dev/random和/dev/urandom来表示随机性,但我找不到关于如何使用此函数生成随机Int和String的简单教程。我尝试了一些代码,但这个函数给了我无法读取的字符。请你给我一个简单的例子,告诉我如何正确使用它?

首先,你想如何使用随机字符串,你想用它们做什么?如果是为密码生成salts,则可以使用此函数生成比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"是您想要得到的初始化向量的大小。请记住,在具有早于5.3.0版本的PHP版本的Windows计算机上使用MCRYPT_DEV_URANDOM和MCRYPT_DEV_RANDOM将不起作用。对于这种情况,请改用MCRYPT_RAND。

如果要生成随机数,请使用mt_rand:

$random = mt_rand(0, 999999);

如果你想要一个字符串,你可以通过散列函数传递得到的整数:

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

CCD_ 2用于密码学。这与您的要求完全无关。

如果你想在安全组件(盐、密码等)中使用随机字符串,请从/dev/urandom中这样阅读:

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

其中10是长度,然后这样转换:

$string = bin2hex($random);
$number = current(unpack('L', $random));

rand(int$min,int$max)将其用于随机数,而字符串则使用随机数的md5或sha1哈希;

相关内容

最新更新