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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
独立部署小程序基于nodejs的服务器过程详解
Jun 24 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 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设计模式 Interpreter(解释器模式)
2011/06/26 PHP
php中的三元运算符使用说明
2011/07/03 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
实例讲解PHP表单
2020/06/10 PHP
jQuery中调用WebService方法小结
2011/03/28 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
python3将变量输入的简单实例
2020/08/19 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
竞选大学学委演讲稿
2014/09/13 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
交通事故被告代理词
2015/05/23 职场文书
MySQL触发器的使用
2021/05/24 MySQL
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers