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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
NodeJS与Mysql的交互示例代码
Aug 18 NodeJs
NodeJS Express框架中处理404页面一个方式
May 28 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
nodejs aes 加解密实例
Oct 10 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 04 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函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
探讨js中的双感叹号判断
2013/11/11 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Django框架视图函数设计示例
2019/07/29 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
python Cartopy的基础使用详解
2020/11/01 Python
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
JAVA招聘远程笔试题
2015/07/23 面试题
会计电算化专业个人的自我评价
2013/11/24 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
霸气队列口号
2014/06/18 职场文书
敬老月活动总结
2014/08/28 职场文书
立志成才演讲稿
2014/09/04 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers