bcrypt对密码加密的一些认识(学习笔记)
2024-10-14 06:25:40
学习nodejs和mongoDB的时候,接触了用户注册和登录的一些知识。
1、关于增强用户密码的安全性
用户的密码肯定不能保存为明文,避免撞库攻击。
撞库攻击:撞库是一种针对数据库的攻击方式,方法是通过攻击者所拥有的数据库的数据通攻击目标数据库。可以理解为用户在A网站被盗的账户密码来登陆B网站,因为很多用户在不同网站使用的是相同的账号密码因此可以起到获取用户在B网站的用户账户从而达到目的。(来自知乎https://www.zhihu.com/question/21562202)
所以,在用户刚创建时,需要对用户密码做哈希处理,以替换明文的密码。这个哈希处理会加盐。每个用户加的盐不一样,可以有效对抗彩虹表攻击。(来自nodejs in action)
加盐:加盐加密是一种对系统登录口令的加密方式,它实现的方式是将每一个口令同一个叫做”盐“(salt)的n位随机数相关联。(来自百度)
彩虹表:一个保存哈希链首尾值的哈希链集。它实现了时间和空间的平衡。(来自知乎https://www.zhihu.com/question/19790488)
2、在明文和密文比对的时候还需要我们提供盐吗?
注册的时候,密文是经过加盐的,而且盐是个随机数,那么我们需要保存这个盐吗?
答案是不需要。
bcrypt的compare方法,只需要提供明文和密文就可完成比对,因为盐是包含在哈希加密后的密文中的,使用compare方法的时候,它会将盐取出并完成比对。(来自stackoverflow,https://stackoverflow.com/questions/13023361/how-does-node-bcrypt-js-compare-hashed-and-plaintext-passwords-without-the-salt)
最新文章
- IOS:Safari不兼容Javascript中的Date问题
- 一个简单的TabItem样式。
- 查看Oracle中是否有锁表的sql
- js 对象属性复制到另一个对象
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.7.SportsStore:购物车
- 刀哥多线程之调度组gcd-12-group
- 开源布局控件 WeifenLuo.WinFormsUI.Docking.dll使用
- HTML5 自适应rem布局
- bootstrap-js(1)模态框
- 虎说:bootstrap源码解读(重置模块)
- Anaconda 安装概要
- zookeeper的安装及集群配置
- Oracle 大数据集成实施
- linux中查看和开放端口
- 北京大学Cousera学习笔记--3-计算导论与C语言基础-第一讲.计算机的基本原理-计算机怎么计算-数的二进制
- React Native之FlatList的介绍与使用实例
- SpringBoot-将servlet容器变成undertow测试tomcat吞吐量
- cyclone iv中DDR2的本地接口时序
- js判断当前页面是顶级窗口
- 启动hive命令时指定参数或自定义参数