2016-06-13 2 views
5

Я создаю поставщика услуг регистрации пользователей, и в этом я использую функцию password_hash для хэширования предоставленного пароля пользователя. Ниже приводится часть кода используется для того, чтобы создать хэш строки:PHP Проблема: функция password_hash не может генерировать соль

public function generateHash($string) 
    { 
     return password_hash($string, PASSWORD_BCRYPT); 
    } 

Как я понял из PHP инструкции, мы не должны генерировать нашу соль и вместо того, чтобы позволить password_hash функция заботиться о том, что для повышения уровня безопасности. Однако, когда я пытаюсь создать новый пользователь, я получаю ниже предупреждение:

Предупреждение: password_hash(): Не удается генерировать соль

Приложение создает пользователь, но в связи с выше вопросом нет хэш будет сгенерирован и пароль всегда будет пустым в базе данных

Я использую PHP версии 7.0.4/Zend Server, в моей среде разработки

было бы весьма признателен, если кто-то может мне точку в правильном

+4

В какой операционной системе вы принимаете? – jszobody

+0

Пустой пароль по-прежнему будет возвращать хэш. –

+3

Из поиска единственное место в источнике PHP, где генерируется это сообщение об ошибке, - [сбой генерации случайных байтов] (https://github.com/php/php-src/blob/c72282a13b12b7e572469eba7a7ce593d900a8a2/ext/standard/password. C# L125-L126). Глядя на [random_bytes] (http://php.net/random_bytes), вы можете увидеть различные способы, с помощью которых PHP попытается создать случайность. Я бы начал их устранять. – jszobody

ответ

0

Оказалось, что у меня возникла проблема с текущей установкой php7. Я переключился на PHP5.6, и все работает отлично.

+3

Хотя это хорошо слышать, но по-прежнему не зная, что проблема на самом деле не помогла кому-либо: '// – Martin

+0

Если вы можете узнать, что вызывает это (некоторые неясные проблемы с доступом к PHP на возможно, сервер?) можете ли вы добавить его в свой ответ? Приветствия. – Martin

+0

Вызовите эту функцию http://php.net/manual/en/function.random-bytes.php. Он должен выбросить исключение с объяснением того, почему он не может собрать случайные данные для генерации соли. – robinkunde

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