加盐算法
- 加盐算法
- 加密
- 验证密码是否正确
对于传统的MD5加密,比更传统的直接保存账号密码稍微安全一点。
md5加密是一种hash算法
比如对于123456来说,md5算法结果一定是e10adc3949ba59abbe56e057f20f883e
这个结果是固定的。于是有的人准备一张彩虹表
预先计算出所有可能的输入和输出组合的哈希值。
因此看来md5加密安全性较低
加盐算法
数据库设计
password存加密后的密码
salt存随机盐值
加密
当用户登陆或者注册时,填写密码后。调用接口,生成随机salt。然后根据加盐算法最终生成password
public static void main(String[] args) throws DecoderException, UnsupportedEncodingException {
String password = "原始密码";
String salt = "8位随机大小写";
// 加盐算法
System.out.println(DigestUtils.md5Hex(String.format("hsweb.%s.framework.%s", password, salt)));
}
验证密码是否正确
1、根据用户输入密码调用校验接口
2、从cookie中拿到当前登录用户。拿到user信息
3、
if (password.equals(DigestUtils.md5Hex(String.format("hsweb.%s.framework.%s", password, salt)))) {
return "验证密码成功";
} else {
return "密码错误";
}