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和php实现图片访问实时处理
Jan 05 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
独立部署小程序基于nodejs的服务器过程详解
Jun 24 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
Nodejs监听日志文件的变化的过程解析
Aug 04 NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 NodeJs
在nodejs中创建child process的方法
Jan 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
深入extjs与php参数交互的详解
2013/06/25 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
mongodb和php的用法详解
2019/03/25 PHP
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
django中的图片验证码功能
2019/09/18 Python
Python 实现数组相减示例
2019/12/27 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
会计与审计专业自荐信范文
2014/03/15 职场文书
公司授权委托书样本
2014/09/15 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript