проблема с функией crypt при смене хостинга

dnsh

Новичок
проблема с функией crypt при смене хостинга

Проблема заключается в следующем есть база паролей зашифрованных функцией crypt

$pass=crypt($pass1, CRYPT_BLOWFISH);
смеил хостин
старый хостинг с параметрами

[PHP_VERSION] => 5.2.0
[PHP_OS] => FreeBSD
[PHP_SAPI] => apache
[CRYPT_BLOWFISH] => 1

а новый с параметрами

[PHP_VERSION] => 4.4.4
[PHP_OS] => Linux
[PHP_SAPI] => apache
[CRYPT_BLOWFISH] => 0

при проверки паролей на новом хостенге получаются разные значения функции crypt

пробовал задовать $pass=crypt($pass1, 1);
всё равно плучаются разные значения
помогите пожалуйсто как решить эту проблему

получается что значения фукции зависит и от оперативной системы сервера ???
 

x-yuri

Новичок
ну ты можешь это проверить, скачай 2 пхп этих версий (http://www.php.net/releases/)
и запусти в командной строке
php -r "crypt('password', CRYPT_BLOWFISH)"
с помощью одного и второго
 

dnsh

Новичок
x-yuri


это непомогае пробовал ужена новом серваке запускать под
[PHP_VERSION] => 5.1.6

тоже под [PHP_OS] => Linux он там стоит и результат идентичный от версии php независит
 

x-yuri

Новичок
ну у себя на машине запусти, узнаем, зависит ли он от ос

-~{}~ 25.12.08 14:52:

но скорее всего от ос зависит, потому что наверняка пхп не сам шифрованием занимается, а поручает это дело какой-нибудь библиотеке
 

dnsh

Новичок
x-yuri
пробовал у меня виста стоит
с новым серваком под ленукс парли одинаковые получаются

вот я и думаю как быть ???
что теперь с этим FreeBSD делать как пароли достовать
 

AmdY

Пью пиво
Команда форума
crypt одинаково работает и под фряхой и под линухой и под форточками.
У меня есть скрипты, которые заказчик устанавливает на различных хостингах, в то же время шифрованные данные передаются и принимаются от програмы написанной на Cи. Сбоев не было.
 

Ярослав

Новичок
У меня была такая проблема тоже.
Обновился php_mcrypt и перестало работать декодирование.
Просто поставили старую версию php_mcrypt и все опять заработало.
К сожалению конфликтные версии уже не помню.
 

dnsh

Новичок
AmdY

скажи мне пожалуйсто почему на первом хостинге (старом)

$pass=crypt($pass1, 1);
выдаёт
1$.fRb.pPVK.Q

а навтором (новом)
1$Z7KRxvc1EX.

и у меня на локальном хосте под
[ZEND_THREAD_SAFE] => 1
[PHP_VERSION] => 5.1.6
[PHP_OS] => WINNT
[PHP_SAPI] => apache2handler
тоже
1$Z7KRxvc1EX.
 

MiksIr

miksir@home:~$
Вроде blowfish в libcrypt появилось после 4.2 фряхи... вероятно на хостинге 4.2 стоит.
Самый быстрый и правильный способ - поменять хостинг.
 

dnsh

Новичок
Ярослав

как бы мне нового хостера уговорить поставить php_mcrypt версиистарого хостера это был бы выход :)

тупиковый вариант помоему или я что то непонимаю и я это моу сделать сам ?
 

Alexandre

PHPПенсионер
но скорее всего от ос зависит, потому что наверняка пхп не сам шифрованием занимается, а поручает это дело какой-нибудь библиотеке
и библиотека эта называется mcrypt и она должна быть ОСь независимая.
 

Ярослав

Новичок
Автор оригинала: dnsh
Ярослав

как бы мне нового хостера уговорить поставить php_mcrypt версиистарого хостера это был бы выход :)

тупиковый вариант помоему или я что то непонимаю и я это моу сделать сам ?
Можешь конечно.
Скачать базу раскодировать в старой и закодировать в новой версии библы.;)
 

MiksIr

miksir@home:~$
mcrypt тут непричем
хешированием по crypt занимается системная (уровня ОС) библиотека libcrypt
 

dnsh

Новичок
Ярослав


брррр что то я немного непонимать как раскодировать базу

Необратимое шифрование это тебе брат не это :(
 

MiksIr

miksir@home:~$
Спрашивай хостера, как тебе получить libcrypt с поддержкой blowfish, если никак - меняй хостера.
Можно, конечно, поискать сторонний софт, который реализует алгоритм blowfish хеширования, но не совсем правильный это способ.
 

Wicked

Новичок
string crypt ( string $str [, string $salt ] )

казалось бы, причем тут blowfish?
 

dnsh

Новичок
Wicked

незнаю причё ну написал так какойто умник уже давно взял за салт CRYPT_BLOWFISH проблема даже не в этом я её потом просто заменил на её значения 1

а в итоге на разных хостах разные значения :(
 

dnsh

Новичок
Wicked

если поможе могу и сказать но помоему это непоможет

-~{}~ 25.12.08 19:43:

MiksIr
у хостера я думаю всё впорядке
вот что функция phpinfo() говорит

mcrypt version >= 2.4.x

Supported ciphers
cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes

Supported modes
cbc cfb ctr ecb ncfb nofb ofb stream

правдо я что то в этом пока невзуб нагой (непонятно:))
 

MiksIr

miksir@home:~$
mcrypt - это mcrypt - это отдельное расширение для криптования.
crypt - это вызов системной libcrypt - алгоритмов хеширования паролей, которых несколько - DES, MD5, Blowfish. В зависимости от формата соли выбирается тот или иной алгоритм. Однако blowfish не такой популярный алгоритм (обычно md5) и теоретически в старых версиях дистрибутивов linux/freebsd его может и не быть.

-~{}~ 25.12.08 18:37:

crypt('password', 1) означает DES хеширование солью '1' тогда как соль должна быть 2 символа. Видимо linux и bsd по-разному реагируют на укороченную соль и по-этому хеши получаются разные. Если вы попробуете пример crypt('password', 11) - то, уверен, хеши будут одинаковые

-~{}~ 25.12.08 19:20:

В 5.3, кстати, вроде обещали встроенные реализации всех алгоритмов crypt.
 
Сверху