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 28 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 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数据库配置文件一般做法分享
2012/07/07 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
php防止sql注入的方法详解
2017/02/20 PHP
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
JavaScript简介
2015/02/15 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
python使用urllib2提交http post请求的方法
2015/05/26 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
python爬取个性签名的方法
2018/06/17 Python
python+opencv+caffe+摄像头做目标检测的实例代码
2018/08/03 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
python中使用while循环的实例
2019/08/05 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
CSMA/CD介质访问控制协议
2015/11/17 面试题
解除租房协议书
2014/12/03 职场文书
优秀党员申报材料
2014/12/18 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
求职信如何撰写?
2019/05/22 职场文书
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL