2017-04-22 84 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