nodejs - bcrypt: сравнение хэша с паролем всегда возвращает не совпадает - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь использовать пакет npm 'bcrypt' для вставки зашифрованного пароля во время регистрации на моей базе PSQL и входа в систему пользователя.

Операции, которые я выполняю:

1)Регистрация: Вставьте имя пользователя и зашифрованный пароль в мою PostgreSQL db

createUser: function(username, password) {
        bcrypt.genSalt(saltCount, function(err, salt) {
            bcrypt.hash(password, salt, function(err, hash) {
                query = "insert query with generated crypt password";
                pool.query(query, (err, res) => {
                    console.log(err, res);
                })
            });
        });
    }

2) Логин пользователя: получите вставленный пароль и сравните его с зашифрованным паролем в PostgreSQL db

login: function(username, password) {
        const query = "select query for get crypt passowrd on db";
        pool.query(query, (err, res) => {
            const dbPsw = res.rows[0].hash_psw; // db password
            bcrypt.compare(password, dbPsw, function(err, result) {
                if (err)
                    console.log(err);
                else if (result)
                    console.log("password match");
                else
                    console.log("not match");
            });
        })
    }

Результат второй функциивсегда "не совпадает".

Я видел на своей базе данных PSQL, что введенный пароль первой функцией всегда отличается, я всегда вставляю один и тот же пароль для шифрования.

Так что мой вопросэто: Как я могу получить всегда один и тот же зашифрованный пароль?Возможно, я что-то не так делаю, но следую руководству на сайте npm.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 08 декабря 2018
 query = "insert query with generated crypt password";

Это должно быть query = "insert query with generated hash ", потому что bcrypt.hash() дает хэш, как видно из параметра метода: function(err, hash), поэтому этот обратный вызов получает либо ошибку, либо хэш

Есть интересный вопрос о том, как работает bcrypt

...