2016-06-13 43 views
5

Tworzę dostawcę usług rejestracji użytkownika, a także używam funkcji password_hash w celu zaszyfrowania podanego hasła użytkownika. Poniżej znajduje się fragment kodu używany w celu stworzenia zaszyfrowany ciąg:Problem PHP: funkcja password_hash nie jest w stanie wygenerować soli

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

Jak zrozumiałem z instrukcji PHP, nie powinny generować naszą sól i zamiast pozwolić funkcja password_hash zająć się, że dla poprawy bezpieczeństwa. Jednak przy próbie utworzenia nowego użytkownika pojawia się poniżej ostrzeżenie:

Ostrzeżenie: password_hash(): Nie można wygenerować sól

Aplikacja tworzy użytkownika, ale ze względu na powyższym numerze hash zostanie wygenerowany i hasło zawsze będzie puste w bazie

używam wersji PHP 7.0.4/Zend Server w moim środowisku programistycznym

To byłoby bardzo mile widziane, jeśli ktoś może mi punkt w prawo kierunek

+4

Jakim systemem operacyjnym jesteś? – jszobody

+0

Puste hasło nadal będzie zwracać hasz. –

+3

Od wyszukiwania jedynym miejscem w źródle PHP, w którym generowany jest ten komunikat o błędzie, jest [nie generowanie losowych bajtów] (https://github.com/php/php-src/blob/c72282a13b12b7e572469eba7a7ce593d900a8a2/ext/standard/password. C# L125-L126). Patrząc na [random_bytes] (http://php.net/random_bytes) można zobaczyć różne sposoby, w jakie PHP będzie próbowało generować losowość. Zacznę rozwiązywać problemy. – jszobody

Odpowiedz

0

Okazało się, że miałem problem z obecną instalacją php7. Przełączyłem się na PHP5.6 i wszystko działa dobrze.

+3

Mimo że dobrze jest to usłyszeć, wciąż nie wiedząc, co to właściwie problem, tak naprawdę nikomu nie pomogło ': - /' – Martin

+0

Jeśli możesz odkryć, co to powoduje (niektóre niejasne problemy z dostępem do PHP na przykład serwer?) czy mógłbyś dodać to do swojej odpowiedzi? Twoje zdrowie. – Martin

+0

Wywołanie tej funkcji http://php.net/manual/en/function.random-bytes.php. Powinien rzucić wyjątek z wyjaśnieniem, dlaczego nie może zebrać losowych danych do wygenerowania soli. – robinkunde