nodejs中密码加密处理操作详解


Posted in NodeJs onMarch 20, 2018

本文实例讲述了nodejs中密码加密处理操作。分享给大家供大家参考,具体如下:

一、关于node加密模块crypto的介绍

其实就是使用MD5加密的,不太安全,在实际开发中根据自己的方案进行加盐处理

二、在路由视图中使用加密方式

1、导入node自带的加密模块(不需要安装)

//导入加密模块
const crypto = require("crypto");

2、做一个用户注册,密码加密的视图

<div class="col-md-6">
  <h4>用户注册</h4>
  <form role="form" method="post" action="/regest">
    <div class="form-group">
      <label for="username">用户名:</label>
      <input id="username" type="text" placeholder="请输入用户名" name="username" class="form-control"/>
    </div>
    <div class="form-group">
      <label for="password">密码:</label>
      <input id="password" type="password" placeholder="请输入密码" name="password" class="form-control"/>
    </div>
    <div class="form-group">
      <input type="submit" value="提交" class="btn btn-success"/>
    </div>
  </form>
</div>
router.post("/regest",(req,res)=>{
  console.log(req.body);
  let name = req.body.username;
  let password = req.body.password;
  let md5 = crypto.createHash("md5");
  let newPas = md5.update(password).digest("hex");
  db("insert into user1(name,password) values(?,?)",[name,newPas],(err,data)=>{
    if (err){
      res.send("注册失败");
    }
    console.log(data);
    if (data){
      res.send("注册成功");
    }
  })
});

三、用户登录进行密码校验

1、把用户输入的密码用同样的方式加密处理
2、把加密后的密码与数据库中匹配

router.post("/login",(req,res)=>{
  let name = req.body.username;
  let password = req.body.password;
  let md5 = crypto.createHash("md5");
  let newPas = md5.update(password).digest("hex");
  db("select * from user1 where name = ?",[name],(err,data)=>{
    console.log(data[0].password);
    if (err){
      res.send("发生错误");
    }
    if (data){
      if (data[0].password === newPas){
        res.send("登录成功");
      }else {
        res.send("用户名或密码错误");
      }
    }
  })
})
<div class="col-md-6">
  <h4>用户登录</h4>
  <form role="form" method="post" action="/login">
    <div class="form-group">
      <label for="username2">用户名:</label>
      <input id="username2" type="text" placeholder="请输入用户名" name="username" class="form-control"/>
    </div>
    <div class="form-group">
      <label for="password">密码:</label>
      <input id="password" type="password" placeholder="请输入密码" name="password" class="form-control"/>
    </div>
    <div class="form-group">
      <input type="submit" value="提交" class="btn btn-success" id="sub-btn2"/>
    </div>
  </form>
</div>

四、扩展(一般我们加密处理)

1、利用随机数随机生成多少位数
2、利用可逆加密把第一步的生成的随机数加密
可逆加密有Base64Hex加密(具体自己百度)
3、将第二步加密好的随机数与我们真实密码拼接在一起
4、将第三步进行加密(MD5)
5、将第四步进行可逆加密
6、将第二步与第五步生成的拼接成密码

五、扩展(一般我们加密的登录)

1、登录时候获取密码
2、从获取的密码中截取随机数加密的那段
3、重复操作上面加密的方式(3,4,5,6)

六、关于正常项目中开发加密的方式代码正确的加密方式

NodeJs 相关文章推荐
将nodejs打包工具整合到鼠标右键的方法
May 11 NodeJs
利用NodeJS的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
Nodejs sublime text 3安装与配置
Jun 19 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
nodejs acl的用户权限管理详解
Mar 14 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
nodejs实现范围请求的实现代码
Oct 12 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 #NodeJs
nodejs基于express实现文件上传的方法
Mar 19 #NodeJs
nodejs+mongodb aggregate级联查询操作示例
Mar 17 #NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 #NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 #NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 #NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 #NodeJs
You might like
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
vue实现城市列表选择功能
2018/07/16 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python中的Classes和Metaclasses详解
2015/04/02 Python
python uuid模块使用实例
2015/04/08 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
python实现KNN分类算法
2019/10/16 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
python数据预处理方式 :数据降维
2020/02/24 Python
python——全排列数的生成方式
2020/02/26 Python
keras.layer.input()用法说明
2020/06/16 Python
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
小学教师的自我评价范例
2013/10/31 职场文书
工程师岗位职责规定
2014/02/26 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
蓬莱阁导游词
2015/02/04 职场文书
党小组考察意见
2015/06/02 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
MySQL快速插入一亿测试数据
2021/06/23 MySQL
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android