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+express+html5 实现拖拽上传
Aug 08 NodeJs
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
nodejs redis 发布订阅机制封装实现方法及实例代码
Dec 15 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 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中获取时间的下一周下个月的方法
2014/03/18 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
使用JS动态显示文本
2017/09/09 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
vue 全局环境切换问题
2019/10/27 Javascript
Python开发常用的一些开源Package分享
2015/02/14 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python 实现链表实例代码
2017/04/07 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
酒吧员工的岗位职责
2013/11/26 职场文书
简历的自我评价范文
2014/02/04 职场文书
李培根演讲稿
2014/05/22 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
运动会通讯稿50字
2015/07/20 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python