$data_ftp='/etc/ftpd.passwd';
session_start();
$data_array=file("$data_ftp");
$d=count($data_array);
$in_pass=crypt($_POST['passwd']);
for($i=0;$i<$d;$i++)
{
list($user,$pass,)=explode(":","$data_array[$i]");
if($user==$_POST['login'] && $pass==$in_pass)
{
$_SESSION['login']=$_POST['login'];
$_SESSION['passwd']=$in_pass;
$avt=1;
break;
}
}
Но так не получается, так как функция crypt каждый раз генерирует новый хеш пароля. Как можно сравнить хеш пароля из файла с хешем введенного пароля. Помогите!
Спустя 1 минута, 34 секунды (5.01.2011 - 02:16) inpost написал(а):
Chel_Hacker777
Нужен второй параметр, что-то типо ключевого слова, по которому проходит сравнение, но... md5 так же хеширует, но является более быстрым и более надежным помощником, поэтому как совет, использовать именно md5, а не crypt.
Нужен второй параметр, что-то типо ключевого слова, по которому проходит сравнение, но... md5 так же хеширует, но является более быстрым и более надежным помощником, поэтому как совет, использовать именно md5, а не crypt.
Спустя 12 минут, 33 секунды (5.01.2011 - 02:28) Chel_Hacker777 написал(а):
inpost
Я бы с радостью использовал md5, но в таком случае не возможно авторизоваться на фтп, так как proftpd использует Unix Crypt хеширование. Хеш всегда получается разный, но proftpd ведь как-то его сверяет. Может и с помощью PHP можно как-то сверить?
Я бы с радостью использовал md5, но в таком случае не возможно авторизоваться на фтп, так как proftpd использует Unix Crypt хеширование. Хеш всегда получается разный, но proftpd ведь как-то его сверяет. Может и с помощью PHP можно как-то сверить?
Спустя 8 минут, 1 секунда (5.01.2011 - 02:36) inpost написал(а):
http://php.net/manual/en/function.crypt.php - если не использовать второй параметр для крипта, он будет всегда по новому генерировать.
Спустя 40 секунд (5.01.2011 - 02:37) Dron19 написал(а):
что-то я не сильно понял того чего Вам нужно, но возник вопрос, вам именно по хэшу сравнивать надо?
Спустя 8 минут, 21 секунда (5.01.2011 - 02:45) Chel_Hacker777 написал(а):
Dron19
Да, нужно сравнивать именно хеши.
Известен хеш, мы вводим пароль, который так же хешируем и потом сравниваем хеш из файла с хешем введенного пароля.
Да, нужно сравнивать именно хеши.
Известен хеш, мы вводим пароль, который так же хешируем и потом сравниваем хеш из файла с хешем введенного пароля.
Спустя 11 минут, 29 секунд (5.01.2011 - 02:57) Dron19 написал(а):
вот пример, на его основе попробуйте себе сделать, на сколько я понял, это то что Вам нужно:
При этом не генерируется система шифрования крипта
$password = crypt('mypassword',CRYPT_MD5);
$passwordTwo = crypt('mypassword',CRYPT_MD5);
echo $password."<br>".$passwordTwo;
При этом не генерируется система шифрования крипта
Спустя 1 минута, 7 секунд (5.01.2011 - 02:58) Chel_Hacker777 написал(а):
Всем спасибо!
Уже разобрался!
Уже разобрался!
Спустя 58 секунд (5.01.2011 - 02:59) Dron19 написал(а):
то ли это? Вам подошло?
Спустя 1 минута, 42 секунды (5.01.2011 - 03:01) Dron19 написал(а):
а как Вы решили проблему?
Спустя 52 минуты, 36 секунд (5.01.2011 - 03:53) Chel_Hacker777 написал(а):
Dron19
Вот таким вот образом (часть кода авторизации):
Вот таким вот образом (часть кода авторизации):
$data_ftp='/etc/ftpd.passwd';
session_start();
$data_array=file("$data_ftp");
$d=count($data_array);
for($i=0;$i<$d;$i++)
{
list($user,$pass,)=explode(":","$data_array[$i]");
if($user==$_POST['login'] && crypt($_POST['passwd'], $pass)==$pass)
{
$_SESSION['login']=$_POST['login'];
$_SESSION['passwd']=$pass;
$avt=1;
break;
}
}