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

转载于:https://www.cnblogs.com/xiaowangxiao/p/10961384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值