теневой пароль - PullRequest
       17

теневой пароль

0 голосов
/ 18 марта 2010

Я пытаюсь сравнить теневой пароль с php cli, но не работает! Я использую эту функцию, чтобы я мог создать пароль, как тень

function shadow ($input){
    for ($n = 0; $n < 9; $n++){
        $s .= chr(rand(64,126));
    }
    $seed =  "$1$".$s."$";
    $return = crypt($input,$seed);
    return $return;
}

когда я заменяю результат в тени, он работает с паролем, но у него другой характер, как я могу его сравнить.

спасибо

Ответы [ 3 ]

2 голосов
/ 18 марта 2010

Используйте соль, хранящуюся в файле паролей:

 $crypted=crypt($_POST['password'], $stored_password);
 if ($crypted==$stored_password) ( // they match

Обратите внимание, что вам не нужно явно извлекать соль из сохраненного пароля и не беспокоиться об алгоритме / размере соли - crypt сделает это за вас.

С

2 голосов
/ 18 марта 2010

Ваша функция создает случайную соль (переменная seed), используя функцию php rand. Таким образом, ваша соль будет отличаться от соли, используемой существующим паролем в файле теней.

Если вы хотите сравнить хешей (т.е. сравнить вывод вашего crypt вызова со значением в shadow), оба хеша должны быть созданы с одинаковыми поваренная соль. Таким образом, вам нужно использовать соль из существующего пароля в теневом файле (= часть $1$...$) вместо случайного создания собственного.

Другими словами, отбросьте свою функцию и просто используйте вместо нее crypt($input, '$1$...$'), где $1$...$ является первой частью хэша в /etc/shadow.

0 голосов
/ 18 марта 2010

Возможно, стоит поискать расширение PAM pecl вместо того, чтобы возиться с /etc/shadow.

.
Это расширение обеспечивает интеграцию PAM (Pluggable Authentication Modules). PAM - это система библиотек, которая выполняет задачи аутентификации приложений и сервисов. Библиотека предоставляет стабильный API-интерфейс для приложений, к которым следует обращаться при выполнении задач аутентификации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...