首页 > 其他分享 >bcrypt 密码加密

bcrypt 密码加密

时间:2022-09-25 14:35:09浏览次数:57  
标签:加密 salt await 密码 字符串 bcrypt

哈希加密是单程加密方式: 1234=>abcd  在加密的密码中加入随机字符串可以增加密码被破解的难度

// 导入bcrypt模块
const bcrypt = require('bcrypt')
// 生成随机字符串 gen => generate 生成 salt 盐
let salt = await bcrypt.genSalt(10)
// 使用随机字符串对密码进行加密
let pass = await bcrypt.hash('明文密码',salt)

bcrypt 依赖的其他环境

python 2.x
node-gyp npm install -g node-gyp
windows-build-tools
npm install --global --production windows-build-tools

bcrypt的基本使用

// 导入bcrypt
const bcrypt = require('bcrypt');
async function run () {
    // 生成随机字符串
    // genSalt方法接收一个数值作为参数
    // 数值越大 生成的随机字符串复杂度越高
    // 数值越小 生成的随机字符串复杂度越低
    // 默认值是 10
    // 返回生成的随机字符串
    const salt = await bcrypt.genSalt(10);
    // 对密码进行加密
    // 1. 要进行加密的明文
    // 2. 随机字符串
    // 返回值是加密后的密码
    const result = await bcrypt.hash('123456', salt);
    console.log(salt);
    console.log(result);
}
run();

 

// 密码比对

let isEqual = await bcrypt.compare('明文密码', '加密密码');

在admin.js中引入功能

// 查询到了用户
    if (user) {
        // 将客户端传递过来的密码和用户信息中的密码进行比对
        // true 比对成功
        // false 对比失败
        let isValid = await bcrypt.compare(password, user.password);
        // 如果密码比对成功
        if ( isValid ) {
            // 登录成功
            // 将用户名存储在请求对象中
            req.username = user.username;
            // res.send('登录成功');
            req.app.locals.userInfo = user;
            // 重定向到用户列表页面
            res.redirect('/admin/user');
        } else {
            // 没有查询到用户
            res.status(400).render('admin/error', {msg: '邮箱地址或者密码错误'})
        }
    } else {
        // 没有查询到用户
        res.status(400).render('admin/error', {msg: '邮箱地址或者密码错误'})
    }

 

标签:加密,salt,await,密码,字符串,bcrypt
From: https://www.cnblogs.com/wangxianwen/p/16727798.html

相关文章

  • AES加密的两种方式ECB与CBC
    AES为对称加密ECB只需要秘钥key、而CBC需要秘钥key和iv,相当于需要两把钥匙。本文使用的是JavaScript代码实现CBC实现代码如下functiongetAesString(data,key,iv){//加......
  • [JSOI2012]玄武密码
    题目对于每一段文字tt,求出其最长的前缀pp,满足pp是ss的子串,其中ss是字串。题解我们可以用ac自动机来做,先把所有字串建个ac自动机,然后用母串在上面跑,把那些点都进行......
  • mysql 更换root密码简单操作
    usemysql;--切换数据库--更新密码updateusersetauthentication_string=password('123456')whereuser='root'; --刷新权限等信息flushprivileges; 执行......
  • docker 安装redis 并设置密码
    拉取镜像dockerpullredis运行容器并设置密码端口号dockerrun-d--namemyredis-p6379:6379redis--requirepass"123456" ......
  • python解决b 视频加密
    代码很简单:1importsys2frompathlibimportPath3fromnumpyimportfromfile,uint8#p......
  • MySQL8 修改root用户登录密码
    在安装MySQL数据库的时候,默认不操作可能会是一个空密码。如果要设置登录密码,很多之前的旧方式,在mysql8中都不适用了,下面的这个是可以操作成功的修改mysql数据库中的user......
  • Harbor密码重置(Harbor平台报错 用户或密码不正确)
    [root@master01~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTS......
  • 易优cms忘记后台登陆密码?解决方法 Eyoucms快速入门
    忘记后台管理密码怎么搞? 方法一:下载官方易优修改重置后台密码小工具 https://www.eyoucms.com/uploads/soft/200319/1-2003191Q000.zip下载附件后解压,将setpwd.php......
  • C#:多态之虚方法、抽象类、接口、 类的序列化、MD5加密。
     (总的来说多态的作用便是解决代码的冗余问题,但代码更加具有可读性,更加的简洁)多态的第一种表现形式:虚方法usingSystem;usingSystem.Collections.Generic;usingSystem......
  • es使用curl 访问带密码
    1.页面输入用户名密码登录,然后f12获取AuthorizationBasic2.curl进行验证-可直接复制url整个链接3.简约下来语句就是这样直接访问curl'http://elastic......