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实用示例 缩址还原
Dec 28 NodeJs
nodejs教程 安装express及配置app.js文件的详细步骤
May 11 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
NodeJS学习笔记之Http模块
Jan 13 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
nodejs微信开发之授权登录+获取用户信息
Mar 17 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 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对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python反射用法实例简析
2017/12/22 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
电子工程专业毕业生求职信
2014/03/14 职场文书
奠基仪式策划方案
2014/05/15 职场文书
装修施工安全责任书
2014/07/24 职场文书
毕业生实习证明
2014/09/19 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
警示教育片观后感
2015/06/17 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS