基于MD5盐值的密码加密与验证方式

数据库表字段保存生成的随机盐值以进行后续验证登录

注册加密

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;
}

posted @ 2019-06-01 23:01  xiaoWangxiao  阅读(5968)  评论(4编辑  收藏  举报