在用户实际的注册和登陆过程中,大部分用户的密码是通用的,比如QQ密码和微博密码一致,工行和建行的取款密码一致,若是用户的登录密码泄露,不法分子会拿着用户的密码去尝试登陆用户的其他服务账号,很可能造成严重的后果。
所以为了防止这种情况发生,我们需要对密码进行加密处理,这里采用的是MD5存储加密方式。
什么是MD5加密
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。 MD5加密的特性:
- MD5加密后输出的是
32位长度的字符串
- 相同的内容使用MD5加密后,得到的内容是一致的
- MD5加密后的字符串是无法反向解密的(唯一的破解方式是暴力碰撞破解)
- 为了防止暴力碰撞破解,我们可以对需要加密的内容,进行加盐处理
- 什么是加盐处理:就是在需要加密的文本内容,和一串长且复杂的文本进行拼接,这样就能防止加密后的MD5值被暴力碰撞破解。
在Express中使用MD5加密(Node.js)
- 运行以下命令安装MD5加密模块:
npm install blueimp-md5 -S
- 使用方式:
var hash = md5("value", "key");