密码是一种用来混淆的技术,使用者希望将正常的(可识别的)信息转变为无法识别的信息。但这种无法识别的信息部分是可以再加工并恢复和破解的。密码在中文里是“口令”(password)的通称。
“明文密码”(Cleartext Password),即传输或保存为明文的密码。具体是指保存密码或网络传送密码的时候,用的是没有隐藏、直接显示的明文字符,而不是经过加密后的密文。如密码为123,那么密文密码是***,明文密码则是123。从信息安全的角度出发,任何网络服务都不应该保存或发送明文密码。
密文是加了密的的文字,明文是加密之前的文字。密文是对明文进行加密后的报文。
用明文保存密码有很大的信息安全隐患。
一般数据库里还存有用户的姓名、手机号、用户名等信息,一旦数据库发生泄漏,再加上用户的明文密码,攻击者就可以用用户名和密码去其他网站尝试登陆(因为往往用户会将多个网站的密码根据习惯设成一样的),一旦登陆成功,就会造成更严重的后果。
在百度以“数据泄露事故”为关键词查找,能找到11,400,000条关于数据泄露的结果。
可能会被不法分子通过撞库的方式去其他网站获取更多的个人信息。
2014年12月25日,12306网站用户信息在互联网上疯传。对此,12306官方网站称,网上泄露的用户信息系经其他网站或渠道流出。据悉,此次泄露的用户数据不少于131,653条。该批数据基本确认为黑客通过“撞库攻击”所获得。
撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。很多用户在不同网站使用的是相同的帐号密码,因此黑客可以通过获取用户在A网站的账户从而尝试登录B网址,这就可以理解为撞库攻击。
一方面,网站运营者要保护好自己的数据库,并且在保存用户关键信息时要进行加密保存。
另一方面,我们在注册不同网站时注意设置不同的密码,尽量不要出现一个账号密码就能登录所注册的所有网站的情况。
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
密码加密
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('明文密码', '加密密码');
下图是项目中对用户登录密码进行比对,注意:密码比对时使用的是该密码加密时的随机字符串,所以只要用户密码正确就可以比对成功,否则比对失败。
参考文章:
什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?
推荐阅读:
常见的用户密码加密方式以及破解方法
数据加密方法及原理介绍