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实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
NodeJs生成sitemap站点地图的方法示例
Jun 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
PHP 各种排序算法实现代码
2009/08/20 PHP
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
Python字典遍历操作实例小结
2019/03/05 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
python使用smtplib模块发送邮件
2020/12/17 Python
自荐信怎么写呢?
2013/12/09 职场文书
编辑求职信样本
2013/12/16 职场文书
母亲80寿诞答谢词
2014/01/16 职场文书
投资合作协议书范本
2014/04/17 职场文书
领导工作表现评语
2015/01/04 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
MySQL去除密码登录告警的方法
2022/04/20 MySQL