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下打包模块archiver详解
Dec 03 NodeJs
Nodejs学习item【入门手上】
May 05 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 NodeJs
配置nodejs环境的方法
May 13 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
php输出图像的方法实例分析
2017/02/16 PHP
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
python的变量与赋值详细分析
2017/11/08 Python
python实现用户答题功能
2018/01/17 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
python help函数实例用法
2020/12/06 Python
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
老教师工作总结的自我评价
2013/09/27 职场文书
求职简历推荐信范文
2013/12/02 职场文书
公司业务主管岗位职责
2013/12/07 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python