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的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 04 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
PHP在Web开发领域的优势
2006/10/09 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
fmt:formatDate的输出格式详解
2014/01/09 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python机器学习实战之树回归详解
2017/12/20 Python
Python装饰器原理与用法分析
2018/04/30 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
解读python如何实现决策树算法
2018/10/11 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
DataReader和DataSet的异同
2014/12/31 面试题
七年级英语教学反思
2014/01/15 职场文书
年度考核自我鉴定
2014/02/02 职场文书
大学生找工作求职信
2014/07/09 职场文书
2014年党小组工作总结
2014/12/20 职场文书
会议开幕词
2015/01/28 职场文书