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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
nodejs实现百度舆情接口应用示例
Feb 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
php流量统计功能的实现代码
2012/09/29 PHP
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
让 python 命令行也可以自动补全
2014/11/30 Python
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
python实现xml转json文件的示例代码
2020/12/30 Python
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
VC++笔试题
2014/10/13 面试题
Ruby如何创建一个线程
2013/03/10 面试题
小区门卫工作职责
2013/12/14 职场文书
技校毕业生的自我评价
2013/12/27 职场文书
慈善晚会策划方案
2014/05/14 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
给numpy.array增加维度的超简单方法
2021/06/02 Python