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学习笔记之MongoDB模块
Jan 13 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
NodeJS使用七牛云存储上传文件的方法
Jul 24 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
通过Nodejs搭建网站简单实现注册登录流程
Jun 14 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 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
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
javascript英文日期(有时间)选择器
2007/05/02 Javascript
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
js 获取、清空input type="file"的值示例代码
2014/02/19 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
Vue的自定义组件不能使用click方法的解决
2020/07/28 Javascript
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python版DDOS攻击脚本
2019/06/12 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
python读取ini配置文件过程示范
2019/12/23 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
晚宴邀请函范文
2014/01/15 职场文书
投资协议书范本
2014/04/21 职场文书
绿色环保标语
2014/06/12 职场文书
社区志愿者活动方案
2014/08/18 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
法制教育主题班会
2015/08/13 职场文书
SQL写法--行行比较
2021/08/23 SQL Server