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和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
使用nodejs、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
浅析nodejs实现Websocket的数据接收与发送
Nov 19 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
nodejs基础之buffer缓冲区用法分析
Dec 26 NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 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 版本]
2007/03/20 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
php生成图片验证码
2015/06/09 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
php 数组元素快速去重
2017/05/05 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
Python爬取附近餐馆信息代码示例
2017/12/09 Python
python requests使用socks5的例子
2019/07/25 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
党员个人总结范文
2015/02/14 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
建党伟业电影观后感
2015/06/01 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android