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使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
nodejs中使用monk访问mongodb
Jul 06 NodeJs
浅谈NodeJS中require路径问题
May 07 NodeJs
nodejs导出excel的方法
Jun 30 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 NodeJs
nodeJs内存泄漏问题详解
Sep 05 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
深入理解Vue Computed计算属性原理
2018/05/29 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
Python Queue模块详解
2014/11/30 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
机电一体化专业应届本科生求职信
2013/09/27 职场文书
生物制药自我鉴定
2014/01/25 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
Mysql Show Profile
2021/04/05 MySQL
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
JS class语法糖的深入剖析
2022/07/07 Javascript