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 相关文章推荐
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
nodejs命令行参数处理模块commander使用实例
Sep 17 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
nodejs修复ipa处理过的png图片
Feb 17 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
NodeJS测试框架mocha入门教程
Mar 28 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 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学习笔记 数组的常用函数
2011/06/13 PHP
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
sae使用smarty模板的方法
2013/12/17 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
Python 流程控制实例代码
2009/09/25 Python
python使用nntp读取新闻组内容的方法
2015/05/08 Python
python生成lmdb格式的文件实例
2018/11/08 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
python内置模块collections知识点总结
2019/12/19 Python
tensorflow 变长序列存储实例
2020/01/20 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
酒店中秋节促销方案
2014/01/30 职场文书
办公室综合文员岗位职责范本
2014/02/13 职场文书
企业办公室岗位职责
2014/03/12 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python