bcrypt 哈希加密的问题 - node.js

Posted

技术标签:

【中文标题】bcrypt 哈希加密的问题 - node.js【英文标题】:Problems with bcrypt hash encryption - node.js 【发布时间】:2021-11-25 03:30:09 【问题描述】:

我在登录时遇到问题,使用哈希,我在 create 方法中进行了调用,并且它工作正常,但是在登录时没有,我在堆栈上看到类似于我的错误,但我没有明白如何实现它,你能给一个力量吗? 它返回的错误消息是“错误:需要数据和哈希参数”错误所在的行将是: const 有效通行证

const connection = require('../database/connection');
const bcrypt = require('bcrypt');

async create(request, response)
        const id, email, password, cpf, name, lastName, cellphone = request.body;

        let salt = await bcrypt.genSaltSync(10);
        let hash = bcrypt.hashSync(password, salt);

        const newUser = await connection('login').insert(
            id,
            email,
            password:hash,
            cpf,
            name,
            lastName,
            cellphone,
        );
        return response.json(id: newUser[0], token: hash.toString('hex'));
        
    ,

async login(request, response)
        const email, password = request.body;

        const user = await connection('login').first('*').where(email:email);

        if(user)
            const validPass = await bcrypt.compareSync(password, user.hash);
            if(validPass)
                response.status(200).json('valid Email and pass!');
            else
                response.json('Wrong pass!')
            
        else
            response.status(400).json(error: 'No user foung with this E-mail');
        

        return response.json(user);
    

【问题讨论】:

【参考方案1】:

在这一行:

const validPass = await bcrypt.compareSync(password, user.hash);

user.hash 更改为user.password

额外说明:在同步函数调用之前,您不需要那些等待。

【讨论】:

我按照指示做了,摆脱了那个错误,现在它正在输入if,但它还没有验证密码,我已经创建了一个新用户,我输入了正确的密码,但它进入 else "Wrong pass!",我会知道为什么? 那我建议你去 console.log 密码和 user.password 看看他们的值是否有问题。其中一个很可能没有您期望的价值。 我发现了它是什么,我的银行被限制为 6 位数字,所以没有精确的比较,它没有去哈希的所有字符,我很抱歉,这是我的旅行哈哈,但是你的帮助很重要,谢谢

以上是关于bcrypt 哈希加密的问题 - node.js的主要内容,如果未能解决你的问题,请参考以下文章

用 bcrypt (PHP) 比较两个哈希值

检查使用 bCrypt 加密的密码 .. 我需要通过网络发送密码吗?

使用Bcrypt对密码进行加密与解密验证

BCryptPasswordEncoder加密

BCryptPasswordEncoder加密

良好的加密哈希函数 [重复]