2014-11-02 4 views
4

У меня есть проект symfony с использованием FOSUSerBundle для управления пользователями. Теперь мне нужно получить доступ к базе данных через Simple Rest Webservice, . Шифрование при регистрации: Sha512. Как я могу получить тот же результат хэша, что и FOS Я пробовал:Пароль шифрования FOSUserBundle

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

и

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

Но он не работает! Какие-либо предложения ?

ответ

10

Согласно вещь классу, который кодирует пароли ФОС FOSUserBundle, вы можете понять, как Symfony сделал его шифрование

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); 
Смежные вопросы