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服务器(5):事件处理程序
Dec 18 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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/14 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
Python3.x和Python2.x的区别介绍
2013/02/12 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
python清空命令行方式
2020/01/13 Python
详解Python中的文件操作
2021/01/14 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
英语专业学生的自我评价
2013/12/30 职场文书
学生请假条格式
2014/04/11 职场文书
上课不认真检讨书
2014/09/17 职场文书
永不妥协观后感
2015/06/10 职场文书
办公室卫生管理制度
2015/08/04 职场文书
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL