Хобрук: Ваш путь к мастерству в программировании

Хэш Phalcon php один и тот же пароль дает несколько результатов

Я использую этот оператор для хеширования пароля с помощью Phalcon:
$hashedPassword= $this->security->hash($password)

но этот оператор возвращает разные результаты с одним и тем же паролем.

Пример:
Set $password=123 Я получаю $hashedPassword со следующими значениями:

$2a$08$T2Rf9IcQHTj7TpY.gsfGiexZ35/KK9kS3fLElxaw8LGXhjnE01f5K and $2a$08$E2mjApECMbRKQFZodgLkEOpDLSV/tEjTe1HV3q2LLG9UINj9M9GBm and $2a$08$aZmgsMmG2xRueVzP6tkx2ucWGPZMzUwIccXbLJnqoRwDsSnT4zc.q


Вот код, который я использую для проверки пароля пользователя.
Пожалуйста, дайте мне знать, что я упустил.

if ($this->request->isPost() == true)
{
    $email = $this->request->getPost ("email");
    $password = $this->request->getPost ("password");

    $conditions = "email = ?1 AND admin = ?2";
    $parameters = array(1 => $email, 2 => 1);

    $users = Users::findFirst(array(
        $conditions,
        "bind" => $parameters
    ));

    if($users)
    {
        $security = new Phalcon\Security();
        $checkHashValue = $security->checkHash($password, $user->password);
        if($checkHashValue)
        {
            $this->flash->success($users->fullname);
        }
        else
        {
            //Print debug information
            $hash = $security->hash($password);

            $checkHash = $security->checkHash($password, $hash);

            $this->flash->error("Password: ". $password. 
            "<br/>Hash: " . $hash . "<br/>Check Hash: " . $checkHash . 
            "<br/>Check HashValue: ". $checkHashValue);
        }
    }
    else
    {
        $this->flash->error($password);
    }
}

РЕШЕНИЕ. У меня опечатка в переменной "user" вместо "users".

16.07.2014

Ответы:


1

Вот как это должно работать. Каждый раз он создает случайный хэш. Для проверки пароля используйте security->checkPassword()

16.07.2014
  • Я разместил свой код. Я использую security-›checkPassword(). Пожалуйста, дайте мне знать, что мне не хватает. Спасибо. 16.07.2014

  • 2

    РЕШЕНИЕ. У меня опечатка в переменной "user" вместо "users".

    16.07.2014
    Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.