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入门详解(多篇文章结合)
Mar 07 NodeJs
nodejs教程之入门
Nov 21 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
Jul 26 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 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
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
php实现上传图片文件代码
2015/07/19 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
Jquery 扩展方法
2010/05/06 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
jQuery实现手势解锁密码特效
2017/08/14 jQuery
javascript实现文字无缝滚动效果
2017/08/26 Javascript
jQuery Collapse1.1.0折叠插件简单使用
2017/08/28 jQuery
vue项目中用cdn优化的方法
2018/01/03 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
Python中文件操作简明介绍
2015/04/13 Python
Python实现的最近最少使用算法
2015/07/10 Python
python实现图片压缩代码实例
2019/08/12 Python
Python 实现自动导入缺失的库
2019/10/29 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
python函数不定长参数使用方法解析
2019/12/14 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
送给他或她的礼物:FUN.com
2018/08/17 全球购物
五四青年节的活动方案
2014/08/20 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
2015年老干部工作总结
2015/04/23 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
培训心得体会怎么写
2016/01/25 职场文书