2014-03-20 2 views
0

Как сделать хэш-пароль для его хранения в БД, если bcrypt используется как алгоритм?Аутентификация базы данных. Хеширование пароля

security: 
    encoders: 
     Hoax\PartnerBundle\Entity\Partner: 
      algorithm: bcrypt 

Я попробовал этот код, но он возвращает разные результаты все время:

$factory = $this->get('security.encoder_factory'); 
$user = new Hoax\PartnerBundle\Entity\Partner(); 

$encoder = $factory->getEncoder($user); 
$password = $encoder->encodePassword('ryanpass', $user->getSalt()); 
$user->setPassword($password); 
+0

Является ли соль различной при каждом попытке? Ваш пароль будет хешем соли и вашим хешированным паролем, чтобы предотвратить атаки на словарях и атаки радужных таблиц. – Sehael

+0

Я думаю, что он определяется bcrypt как Partner :: getSalt() возвращает null. Как его зашифровать для хранения в БД? Я пробовал онлайн-инструмент, и каждый раз каждый раз различался пароль: https://www.dailycred.com/blog/12/bcrypt-calculator –

ответ

0

Я не слишком хорошо знакомы с bcrypt, но Symfony документы дают вам ответ на ваш вопрос. И хотя в большинстве случаев лучше использовать метод солей Symfony2, похоже, что bcrypt включает соль в пароль. Прочтите раздел bcrypt документов symfony.

Соль для каждого нового пароля генерируется автоматически и не нуждается в сохранении. Так как закодированный пароль содержит соль, используемую для его кодирования, достаточно сохранить только закодированный пароль.

Именно поэтому каждый раз каждый пароль. Сам хэш уже содержит соль. Таким образом, пароль «password» будет иметь другой хеш каждый раз, когда он «bcrypt», потому что он включает соль.

+0

Если соль не прошла, вы действительно получаете другой зашифрованный пароль для каждого вызова, который делает это невозможно проверить пароль позже. Я предполагаю, что это делает @Roman. Следовательно, потребность в объекте пользователя для создания и хранения соли. – Cerad

+0

соль хранится в хеше, проверьте ссылку с @Roman Newaza, [dailycred.com/blog/12/bcrypt-calculator](http://dailycred.com/blog/12/bcrypt-calculator), даже если есть другой хеш, вы можете проверить тот же пароль – Sehael

+0

По golly вы правы. Функция php password_verify не нуждается в соли. Узнал что-то новое. Так что я задаюсь вопросом, в чем проблема? – Cerad

Смежные вопросы