2011-12-30 5 views
1

해시 된 암호를 알고 있으므로, Authlogic (ruby on rails gem)을 사용하여 원래 암호 & 암호를 생성하십시오.PHP에서 Authlogic 해시를 재현하십시오.

PHP에서 DB에서 사용자 암호가 사용자 Ruby Authlogic hashed_pw와 일치하는지 확인하는 기능을 할 수 있습니까? 모든 Ruby 사용자 암호를 재설정하지 않고 기존 PHP 응용 프로그램을 Ruby 응용 프로그램과 통합해야합니다.

나는 다음과 같은 시도하지만 DB 정보이 내가 무엇을 놓치고 가능해야한다 것 같다

crypted_password 
f777c545bf9844faaa5f3b129e77e4199539793d907e397ddc97d1bb747a30d402201bd11ed9ca0eaecbf3b9652b314aa919d65904c64d4169ce0e1ac1c526a4 

password_salt 
NsxUt51YVzK4dFeVJOj 

real password 
orange 

입니다

function passwordhash($password, $salt) 
{ 
return hash('sha512', "{$password}:{$salt}"); 
} 
echo passwordhash("orange","NsxUt51YVzK4dFeVJOj"); 
output: 7b4a69291354dc3591e490f47f29d5a4a4b6d7faa23d01a1ee595b917526b65e2dda48e978c46b81dde0269adc3f853a36c075d236eb89c8f6b21811fe3da1bb 

작동하지 않았다?

감사합니다, 라이언

+0

를? – WarFox

답변

2
가 authlogic 코드 내 열람이 두 가지 제안

:

  • 그것은 사용하지 않습니다 : (소금에서 암호를 분리를 예를 소화 할 수있는 첫 번째 문자열은 orangeNsxUt51YVzK4dFeVJOj
  • 그것은 SHA512 첫번째 프로세스의 출력에 다이제스트 않으며이 과정을 20 회 반복

또 다른 점은 authlogic이 많은 해싱 전략을 지원한다는 것입니다. 올바른 알고리즘을 다시 구현하려고합니다! 그것은 확실히 20 배의 sha512가 맞는 것 같습니다.

링크 : https://github.com/binarylogic/authlogic/blob/master/lib/authlogic/crypto_providers/sha512.rb 나는이 같은 루비 보석 authlogic의 SHA512 구현 재현하는 관리

0

: 나는 PHP에서 당신을 위해 작동 않았다, 자바에서 동일한 작업을 수행하려고

/** 
    * implements ruby gem authlogic sha512 encryption 
    * @param $password 
    * @param $salt 
    * @return string 
    */ 
    private function sha512hash($password, $salt) { 
    $strechtes = 20; 
    $digest = $password . $salt; 
    for ($i = 0; $i < $strechtes; $i++) { 
     $digest = hash('sha512', $digest); 
    } 
    return $digest; 
    }