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 相关文章推荐
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
nodeJS代码实现计算交社保是否合适
Mar 09 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
nodejs 使用 js 模块的方法实例详解
Dec 04 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 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面向对象——访问修饰符介绍
2012/11/08 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
Mootools 1.2教程 类(一)
2009/09/15 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
Django model select的多种用法详解
2019/07/16 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
详解Python中的分支和循环结构
2020/02/11 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
PHP面试题附答案
2015/11/28 面试题
面试后的感谢信范文
2014/02/01 职场文书
《花木兰》教学反思
2014/04/09 职场文书
C++程序员求职信
2014/05/07 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
失职检讨书大全
2015/01/26 职场文书
安阳殷墟导游词
2015/02/10 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
民事二审代理词
2015/05/25 职场文书
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏