密码加密 bcrypt模块的基本使用

一、什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?

1、什么叫密码?

密码是一种用来混淆的技术,使用者希望将正常的(可识别的)信息转变为无法识别的信息。但这种无法识别的信息部分是可以再加工并恢复和破解的。密码在中文里是“口令”(password)的通称。

2、什么是明文密码?

“明文密码”(Cleartext Password),即传输或保存为明文的密码。具体是指保存密码或网络传送密码的时候,用的是没有隐藏、直接显示的明文字符,而不是经过加密后的密文。如密码为123,那么密文密码是***,明文密码则是123。从信息安全的角度出发,任何网络服务都不应该保存或发送明文密码。

3、什么是密文密码?

密文是加了密的的文字,明文是加密之前的文字。密文是对明文进行加密后的报文。

4、为什么不允许在数据库里明文保存密码?

用明文保存密码有很大的信息安全隐患。
一般数据库里还存有用户的姓名、手机号、用户名等信息,一旦数据库发生泄漏,再加上用户的明文密码,攻击者就可以用用户名和密码去其他网站尝试登陆(因为往往用户会将多个网站的密码根据习惯设成一样的),一旦登陆成功,就会造成更严重的后果。

5、数据泄露经常发生么?

在百度以“数据泄露事故”为关键词查找,能找到11,400,000条关于数据泄露的结果。
在这里插入图片描述

6、明文密码泄露的危害?

可能会被不法分子通过撞库的方式去其他网站获取更多的个人信息。
2014年12月25日,12306网站用户信息在互联网上疯传。对此,12306官方网站称,网上泄露的用户信息系经其他网站或渠道流出。据悉,此次泄露的用户数据不少于131,653条。该批数据基本确认为黑客通过“撞库攻击”所获得。

7、什么是撞库

撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。很多用户在不同网站使用的是相同的帐号密码,因此黑客可以通过获取用户在A网站的账户从而尝试登录B网址,这就可以理解为撞库攻击。

8、如何避免出现这种情况?

一方面,网站运营者要保护好自己的数据库,并且在保存用户关键信息时要进行加密保存。
另一方面,我们在注册不同网站时注意设置不同的密码,尽量不要出现一个账号密码就能登录所注册的所有网站的情况。

二、使用bcrypt模块对密码进行加密

1、bcrypt依赖的其他环境

1. python 2.x

官网下载安装包进行安装,下载地址:https://www.python.org/downloads/release/python-2717/
在这里插入图片描述

默认安装就好了,安装完成后,还需要添加系统变量,就是将python2.7的安装位置添加到path系统变量中。如下图

在这里插入图片描述

2. node-gyp 模块

npm install -g node-gyp

3. windows-build-tools
此模块的安装需要依赖python2.x

 npm install --global --production windows-build-tools
2、bcrypt模块的基本使用

密码加密

bcrypt中的genSalt方法接收一个数值作为参数,数值越大生成的随机字符串复杂度越高,数值越小 生成的随机字符串复杂度越低,默认值是 10,返回生成的随机字符串。

bcrypt中的hash方法,第一个参数是要进行加密的明文,第一个参数是随机字符串(salt),返回值是加密后的密码。

代码示例:
对密码123456进行加密

// 导入bcrypt模块
const bcrypt = require('bcrypt');
async function run () {
// 生成随机字符串 gen => generate 生成 salt 盐
	const salt = await bcrypt.genSalt(10);
// 使用随机字符串对密码进行加密
	const result = await bcrypt.hash('123456', salt);
	//输出随机字符串
	console.log(salt);
	//输出加密密码
	console.log(result);
}
run();

在这里插入图片描述

密码比对

下面是已经向数据库中添加的带有加密密码的数据
在这里插入图片描述

// 密码比对
let isEqual = await bcrypt.compare('明文密码', '加密密码');

下图是项目中对用户登录密码进行比对,注意:密码比对时使用的是该密码加密时的随机字符串,所以只要用户密码正确就可以比对成功,否则比对失败。
在这里插入图片描述

参考文章:

什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?

推荐阅读:

常见的用户密码加密方式以及破解方法
数据加密方法及原理介绍

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页