2014-11-02 2 views
4

사용자를 관리하기 위해 FOSUSerBundle을 사용하는 symfony 프로젝트가 있습니다. 이제 간단한 휴식 웹 서비스 인 을 통해 데이터베이스에 액세스해야합니다. 등록시 암호화가 Sha512인데 어떻게 FOS와 동일한 해시 결과를 얻을 수 있습니까?암호화 암호 FOSUserBundle

hash('sha512',($salt.$password)); 

hash('sha512',($password.$salt)); 

을하지만 그것은 작동 나던 : 나는 노력! 어떤 제안?

답변

10

암호의 FOS FOSUserBundle을 인코딩하는 것은 클래스에 따르면, 당신은 심포니는 자신의 암호화를 만들 었는지 이해할 수

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Security/Core/Encoder/MessageDigestPasswordEncoder.php

그래서 당신은 얻을 것이다 뭔가 같은 :

$password = 'toto'; 
$salt = '1234'; 
$salted = $password.'{'.$salt.'}'; 
$digest = hash('sha512', $salted, true); 

for ($i=1; $i<5000; $i++) { 
    $digest = hash('sha512', $digest.$salted, true); 
} 

$encodedPassword = base64_encode($digest);