数据库表字段保存生成的随机盐值以进行后续验证登录
注册加密
controller层获取用户输入的用户名和密码调用方法这里不再赘述,直接上实现代码
service实现层
/**
* 用户注册
* @param user 将要注册的用户数据
*/
public void reg(User user){
// - 生成随机盐
String salt = UUID.randomUUID().toString().toUpperCase();
// - 基于原密码和盐值执行加密
String md5Password = getMd5Password(user.getPassword(), salt);
// - 将盐和加密结果封装到user对象中
user.setSalt(salt);
user.setPassword(md5Password);
// 执行注册
Integer rows = userMapper.insert(user);
}
验证登录方式
根据登录名获取数据表中用户生成密码的盐值反加密后进行比对
String md5Password = getMd5Password(password, salt);
密码的加密方法(根据需要自行设置)
/**
* 将密码执行加密
* @param password 原密码
* @param salt 盐值
* @return 加密后的结果
*/
private String getMd5Password(String password, String salt) {
// 拼接原密码与盐值
String str = salt + password + salt;
// 循环加密5次
for (int i = 0; i < 5; i++) {
// DigestUtils:springboot提供的工具类
str = DigestUtils.md5DigestAsHex(
str.getBytes()).toUpperCase();
}
// 返回结果
return str;
}