NodeJS实现不可逆加密与密码密文保存的方法


Posted in NodeJs onMarch 16, 2018

本文实例讲述了NodeJS实现不可逆加密与密码密文保存的方法。分享给大家供大家参考,具体如下:

在应用中,常常有要将用户的密码加密储存的需要。

以明文保存密码有个缺点:一旦泄漏时容易造成极大的损失,可能会连带其他网站的用户、密码也造成损失(因为大多数用户在多数网站使用相同的账号与密码)。

这个泄漏可能来自于两方面:骇客入侵与运维人员监守自盗。

为了防止在密码明文泄漏,我们需要对在数据库中保存的密码字段进行不可逆加密。准确地说,是加密以后再保存到数据库中。

常用的不可逆加密算法有MD5SHA-1

在NodeJS中,它们的使用极为简便,直接使用官方内建的 crypto 包即可:

var clearText = '123456';
// MD5 Hash
require('crypto').createHash('md5').update(clearText).digest('hex');
// 'e10adc3949ba59abbe56e057f20f883e'
// SHA-1 Hash
require('crypto').createHash('sha1').update(clearText).digest('hex');
// '7c4a8d09ca3762af61e59520943dc26494f8941b'

当用户注册时,将用户提交的密码先不可逆加密,然后将密文保存在数据库内。

当用户登录时,将用户提交的密码先以相同方式加密,然后与数据库中的密文比对,来判断密码的正误。

理论上有无数个密码对应同一个Hash值,不过不用过于担心被撞表的风险,因为相比之下,你的Web服务器与数据库可能会在泛洪攻击中先行崩溃。

NodeJs 相关文章推荐
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
nodejs中转换URL字符串与查询字符串详解
Nov 26 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs实现范围请求的实现代码
Oct 12 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 #NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 #NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 #NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 #NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 #NodeJs
nodejs acl的用户权限管理详解
Mar 14 #NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 #NodeJs
You might like
解析yii数据库的增删查改
2013/06/20 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
jQuery 1.0.2
2006/10/11 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python游戏地图最短路径求解
2019/01/16 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
高一英语教学反思
2014/01/22 职场文书
建国大业观后感
2015/06/01 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
JS数组去重详情
2021/11/07 Javascript
HTML基本元素标签介绍
2022/02/28 HTML / CSS