-1

私は localhost php mysql POS (Windows) を持っていてrand、指定された時間 (毎分) に基づいて数値を生成するこのコードを見つけました: コードは次のとおりです:

<?php
class Random {

    // random seed
    private static $RSeed = 0;

    //set seed
    public static function seed($s = 0) {
        self::$RSeed = abs(intval($s)) % 9999999 + 1;
        self::num();
    }


    // generate random number
    public static function num($min = 0, $max = 9999999) {
        if (self::$RSeed == 0) self::seed(mt_rand());
        self::$RSeed = (self::$RSeed * 125) % 2796203;
        return self::$RSeed % ($max - $min + 1) + $min;
    }

}


// set seed
Random::seed(check_time());

// echo 10 numbers between 1 and 100
for ($i = 0; $i < 10; $i++) {
    echo Random::num(1, 100) . '<br />';
}


function check_time(){
echo "Your Time is = ".date('h:i:s')."<br />";
if (date('i')) {
   return date('i');
}
}

?>

これで完全に機能しますが、これは私が本当に必要としているものではありません。rand出力された数値を使用して管理エリアの Web ページにアクセスするアイデアを探しています。どうすればそれが可能ですか?1 週間前と同じように、乱数を生成してサーバーと同期する新しい HSBC セキュリティ カードを入手しました。PHP と Mysql でこのようにするのは本当に難しいですか?

私が欲しいものを明確にするための結論として、毎分生成される乱数が必要で、mysql dbと同期する必要があります-多分-? 管理エリアにアクセスするため。

このアイデアを実現するための最初のステップを探しています。申し訳ありませんが、PHP セキュリティに詳しくありません。

ありがとうございました。

4

1 に答える 1

2

これらの数字は「ランダム」ではありません。2 つの当事者が同時に同じ数字を知る方法がない場合です。これらのオーセンティケーター トークンは、OTP (ワンタイム パスワード) デバイスです。Google は、OTP サービスの優れたオープンソース実装であるGoogle Authenticatorを作成しました。多くの言語で利用可能なプロトコルの実装があります。

このシステムは、2 者が共有シークレットを 1 回交換することに依存しています。これを設定すると、サーバーがシークレットを生成し、携帯電話または他のデバイスがこのシークレットを取得します。多くの場合、QR コードをスキャンします。両方のマシンが、最初のシークレットと現在の時刻に基づいて、一見予測不可能な数値を生成するようになりました。

これを簡単に追加できる別の優れた実装については、http://authy.comを参照してください。

于 2013-08-27T16:54:57.717 に答える