[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Использование функции crypt
Chel_Hacker777
Пишу панель для управления фтп аккаунтами. То есть каждый пользователь нужно чтоб мог войти в эту панель используя свой логин и пароль от фтп. Стоит proftpd, все данные о пользователях хранятся в /etc/ftpd.passwd Так вот нужно сделать проверку логина и пароля пользователя, я сначала сделал так:

$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.

Спустя 12 минут, 33 секунды (5.01.2011 - 02:28) Chel_Hacker777 написал(а):
inpost
Я бы с радостью использовал 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;
}
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.