2017-04-22 15 views
-2
私はさらに、このコードをランダム化することができるかもしれないと思いまし

こんにちは皆:PHPは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; 
    } 

?> 

は、[OK]を、このスレッドにつまずいたと話題を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

コメントありがとうございます!私は "random_int"のgithubバージョンでシードできるかどうか疑問に思っていましたか?私はxの時間のために乱数を保持したいので、それが必要です。 – Hxfs

+0

私はそうは思わない。それはまた、暗号指向のアルゴリズムに望まれるもののようには聞こえません。 – Pharaoh

+0

問題は、この乱数をさまざまなコンピュータで一意にする必要があるため、この乱数を必要とするため、time()の使用は必須です – Hxfs

関連する問題