2017-04-22 86 views
-2

大家好我想这可能是可能的随机验证码更进一步:PHP“randomize”rand()函数?

<?php 
    $key=md5('ILOVEYOU'); 
    $serverseed = floor(time()/5); 
    srand($serverseed); 
    $result = rand(); 

    $modulus_result= $result % 100; 

    echo "before: ".$modulus_result."<br>"; 
    echo "after: ".encrypt($modulus_result, $key)."<br>"; 
    echo decrypt($modulus_result, $key); 

    function decrypt($string, $key){ 
     $string = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($string), MCRYPT_MODE_ECB)); 
     return $string; 
    } 
    function encrypt($string, $key){ 
     $string = rtrim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_ECB))); 
     return $string; 
    } 

?> 

好了大家,在此线程迷迷糊糊地missunderstood的话题,我没有使用此功能,以保护任何东西在我的网站,我只是想方法随机该功能,因为它使用时间()作为​​参考...

我需要生成一个随机int从1-100,这似乎工作,我只是看用于其他方式来随机化它(如果我能解释更多,添加某种“盐”而不是任何类型的加密)。

+3

*“所以我可以保护我的网站多一点”* - 你能详细说明一下吗?很难说这是真的。 –

+0

我的意思不是苛刻,但你似乎不知道你在做什么。而在处理安全问题时,这是非常危险的。任何以100为模的东西只能有100个可能的值,这在计算上只有很小的一部分。这绝对不适合确保任何东西。 – Siguza

+0

嗯,这是这个线程的全部,我仅限于使用此代码来生成我的号码...:[ – Hxfs

回答

3

检查documentation

此功能不会产生加密安全值,而 不应该被用于密码的目的。如果您需要密码安全值 ,请考虑使用random_int(), random_bytes()或openssl_random_pseudo_bytes()代替。

您可能想用random_int代替。

与PHP 7引入的问题,所以你可能无法使用它。在这种情况下,您可以得到​​,如文档中所述。

+0

谢谢您的评论!我想知道是否github版本的“random_int”允许播种?我需要它,因为我想保留一个随机数字x时间。 – Hxfs

+0

我不这么认为。它也听起来不像加密定向算法所期望的任何东西。 – Pharaoh

+0

问题是我需要这个随机数被播种,因为我需要它是各种计算机的唯一,因此使用time()是强制性的 – Hxfs