Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Różne wersje PHP, różne wyniki funkcji crypt()
Forum PHP.pl > Forum > PHP
karakara
Kod:
  1. echo $a = 'stackoverflow';
  2. echo '<br>';
  3. echo $b = '$2a$10$bf57caf7e1fa23e4b975ab';
  4. echo '<br>CRYPT:<br>';
  5. echo crypt($a, $b);


Wynik dla PHP 5.2.5
Cytat
stackoverflow
$2a$10$bf57caf7e1fa23e4b975ab
CRYPT:
$2.LaeiP21fsQ


Wynik dla PHP 5.4.4
Cytat
stackoverflow
$2a$10$bf57caf7e1fa23e4b975ab
CRYPT:
$2a$10$bf57caf7e1fa23e4b975aOhXjTtYrqOYLfHsxdOxGRhF03.LtKewW


Chce przenieść skrypt na nowy serwer, do tego potrzebuje zmusić PHP 5.4 do zachowania jak 5.2.5 (czyli chciałbym w 5.4 uzyskać ten sam wynik co 5.2.5)
Gdy do soli dodam $ na końcu to i tak nie ma różnicy.

Jak możecie się domyślać pytanie zadałem też na StackOverflow jak narazie bez rezultatu (http://stackoverflow.com/questions/15021135/different-versions-of-php-different-results-of-crypt)

Proszę o pomoc.
timon27
Różnice w funkcji crypt() nie wynikają bezpośrednio z różnych wersji php, tylko z zainstalowanej funkcji hashującej.
Jeśli możesz i masz możliwość musisz zmienić funkcję hashującą.
Jeśli nie, to po prostu zrezugnuj z funkcji crypt i skorzystaj z normalnego hashowania z solą.
sowiq
Cytat(timon27 @ 22.02.2013, 11:36:50 ) *
Jeśli nie, to po prostu zrezugnuj z funkcji crypt i skorzystaj z normalnego hashowania z solą.


php.net powiada:
Cytat
Why are common hashing functions such as md5() and sha1() unsuitable for passwords?
Hashing algorithms such as MD5, SHA1 and SHA256 are designed to be very fast and efficient. With modern techniques and computer equipment, it has become trivial to "brute force" the output of these algorithms, in order to determine the original input.
Because of how quickly a modern computer can "reverse" these hashing algorithms, many security professionals strongly suggest against their use for password hashing.


Jednym słowem, ze względu na dużą obecnie moc obliczeniową komputerów, md5 czy sha1 są zbyt łatwe do złamania metodą brute force, więc powinno się wykorzystywać powolniejsze metody.

[edit]
@karakara, zerknij tutaj: https://bugs.php.net/bug.php?id=60073&edit=1
Ktoś wrzucił podobny problem jako bug w PHP. Odpowiedź brzmi:
Cytat
"$2C9b17FGUTd." is not a valid Blowfish hash. You got this output on earlier versions of PHP where CRYPT_BLOWFISH was not supported, or perhaps a buggy version was being used. PHP 5.3.8 is returning the correct hash.

Zgadza się to z tym, co Ty otrzymywałeś. Ciąg "$2.LaeiP21fsQ" jest zdecydowanie za krótki jak na hash...
karakara
ktoś kiedyś podesłał mi rozwiązanie z hashowaniem haseł przy pomocy crypt() a ja tego użyłem zamist zwyklego np. sha384 ze solą
tak więc zmiana funkcji hashującej jest trudna ponieważ nie mam haseł użytkowników, musiałbym wymusić na wszystkich zmianę hasła

I dlatego szukam innego rozwiązania aby nie stracić tych danych albo nie wymuszać zmiany haseł.
sowiq
Zobacz wyedytowaną część mojego posta.

Bardzo dobrze, że użyłeś crypt() - jest to obecnie zalecany sposób hashowania haseł. Szkoda tylko, że od początku nie wydało Ci się podejrzane, że hash jest bardzo krótki (porównywalny z długością hasła).

Swoja drogą, jeśli dobrze pamiętam, w którejś wersji PHP był taki bug, że funkcja crypt() zawsze zwracała tylko salt. Takie rzeczy niosą dosyć poważne konsekwencje smile.gif
!*!
Cytat(karakara @ 22.02.2013, 11:51:20 ) *
I dlatego szukam innego rozwiązania aby nie stracić tych danych albo nie wymuszać zmiany haseł.


To zmień je w locie zaraz przy zalogowaniu.
sowiq
Cytat(!*! @ 22.02.2013, 11:59:07 ) *
To zmień je w locie zaraz przy zalogowaniu.

Ale wypadałoby najpierw jakoś sprawdzić, czy dane logowania się zgadzają ;)
!*!
Cytat(sowiq @ 22.02.2013, 12:22:10 ) *
Ale wypadałoby najpierw jakoś sprawdzić, czy dane logowania się zgadzają wink.gif

Logiczne że zmianę robisz PO wink.gif
karakara
tak pewnie zrobię i liczę na to, że dużo osób się zaloguje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.