PHP“随机化”rand()函数?

时间:2017-04-22 18:40:21

标签: php random seed

大家好,我想知道什么可以进一步随机化这个代码:

<?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;
    }   

?>

对于那些偶然发现这个主题的人并且误解了这个主题,我没有使用这个功能来保护我网站内的任何内容,我只是想办法随机化这个函数,因为它使用time()作为参考。 ..

我需要从1-100生成一个随机int,这似乎有用,我只是在寻找其他方法来随机化它(如果我可以解释一下,添加某种“盐”而不加密任何形式。)

1 个答案:

答案 0 :(得分:3)

检查documentation

  

此功能不会生成加密安全值,并且   不应用于加密目的。如果你需要一个   加密安全值,考虑使用random_int(),   而不是random_bytes()或openssl_random_pseudo_bytes()。

您可能希望改用random_int

问题就是PHP 7引入的问题,因此您可能无法使用它。在这种情况下,您可以获得它here,如文档中所述。