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服务器(2):nodejs服务器的构成分析
Dec 18 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
nodejs基础知识
Feb 03 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
Nodejs核心模块之net和http的使用详解
Apr 02 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 NodeJs
分享node.js实现简单登录注册的具体代码
Apr 26 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
JAVA/JSP学习系列之四
2006/10/09 PHP
Zend公司全球首推PHP认证
2006/10/09 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
php实现的生成排列算法示例
2019/07/25 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
python cookielib 登录人人网的实现代码
2012/12/19 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
Python实现单词拼写检查
2015/04/25 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
高中军训第一天感言
2014/03/06 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
庭外和解协议书
2016/03/23 职场文书