2013-08-27 2 views
-1

내가 판매의 로컬 호스트 PHP는 MySQL의 점 (창)을 봤는데, 지정된 시간 (매 분)을 기반으로 rand 번호를 생성에 관한이 코드 발견 : 이제특정 시간을 기준으로 한 PHP 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 출력 번호를 사용하여 내 관리 영역 웹 페이지에 액세스하는 방법을 찾고 있습니다. 어떻게 할 수 있습니까? 1 주일 전에 나는 무작위 숫자를 생성하고 그들의 서버와 동기화하는 새로운 HSBC 보안 카드를 얻었다. PHP와 Mysql에서 이렇게하는 것이 정말 어렵습니까?

내가 원하는 것을 명확히하기 위해 매분마다 생성되는 난수가 필요하며 mysql db와 동기화되어야합니다 - 어쩌면 -? 관리 영역에 액세스하려면

나는 PHP 보안에 익숙하지 않아서이 아이디어를 얻으려는 첫 번째 단계를 찾고 있습니다.

감사합니다.

+1

난수 등을 저장 하시겠습니까? 좋은 접근 방법이 아닙니다. 이것을 구현하고 싶습니다 : http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm - Google 인증 자 소스 코드를 볼 수있는 출발점으로 : http://code.google.com/p/google-authenticator/ – ThiefMaster

+0

@ThiefMaster 도움을 주셔서 감사합니다. – Alihamra

답변

2

두 숫자가 같은 숫자를 동시에 알 수 없으면 "임의"가 아닙니다. 이러한 인증 자 토큰은 OTP (일회용 암호) 장치입니다. Google은 OTP 서비스의 훌륭한 오픈 소스 구현 인 Google Authenticator을 만들었습니다. 여러 언어로 사용 가능한 프로토콜에 대한 구현이 있습니다.

시스템은 공유 비밀을 한 번 교환하는 두 사람에 따라 다릅니다. 이것을 설정할 때, 서버는 비밀을 생성하고 당신의 전화 또는 다른 장치는이 비밀을 얻습니다. 종종 QR 코드를 스캔합니다. 두 기계 모두 초기 비밀과 현재 시간을 바탕으로 예측할 수없는 숫자를 생성합니다.

또 다른 멋지고보기 쉬운 구현은 http://authy.com을 참조하십시오.

관련 문제