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 url验证(url-valid)的使用方法
Nov 18 NodeJs
nodejs教程之异步I/O
Nov 21 NodeJs
使用nodejs开发cli项目实例
Jun 03 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
nodejs批量下载图片的实现方法
May 19 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
nodejs简单抓包工具使用详解
Aug 23 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
php获取字段名示例分享
2014/03/03 PHP
php url路由入门实例
2014/04/23 PHP
php header函数的常用http头设置
2015/06/25 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
轻松实现php文件上传功能
2017/02/17 PHP
Jquery 表格合并的问题分享
2011/09/17 Javascript
Dom操作之兼容技巧分享
2011/09/20 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
Python3.x中自定义比较函数
2015/04/24 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
django 简单实现登录验证给你
2019/11/06 Python
Python while循环使用else语句代码实例
2020/02/07 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
Python求凸包及多边形面积教程
2020/04/12 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
计算机应用毕业生自荐信
2013/10/23 职场文书
测绘工程专业个人自我评价
2013/12/01 职场文书
干部行政关系介绍信
2014/01/17 职场文书
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
分层教学实施方案
2014/03/19 职场文书
倡议书格式模板
2014/05/13 职场文书
年终工作总结范文2014
2014/11/27 职场文书
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js