提交 1bc06f30 编写于 作者: RunAtWorld's avatar RunAtWorld

md5工具类

上级 62bfaa3e
# 秒杀方案
## 1.登录功能
### 1.1 两次MD5加密
* 客户端:passwd=MD5(明文+固定slat)
* 服务端: passwd=MD5(用户输入+随机slat)
\ No newline at end of file
package dev.lpf.seckilldemo.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
/**
* 秒杀项目
* <p>
* 前端控制器
* </p>
*
* @author RunAtWorld
* @since 2021-01-07
*/
@Controller
@RequestMapping("/user")
@Slf4j
public class UserController {
}
package dev.lpf.seckilldemo.mapper;
import dev.lpf.seckilldemo.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 秒杀项目
* <p>
* Mapper 接口
* </p>
*
* @author RunAtWorld
* @since 2021-01-08
*/
public interface UserMapper extends BaseMapper<User> {
}
package dev.lpf.seckilldemo.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 秒杀项目
* <p>
*
* </p>
*
* @author RunAtWorld
* @since 2021-01-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("t_user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户id,默认为手机号码
*/
private Long id;
private String nickname;
/**
* MD5(MD5(pass明文+固定salt),salt)
*/
private String passwd;
/**
* 盐值
*/
private String salt;
/**
* 头像
*/
private String head;
/**
* 注册时间
*/
private LocalDateTime registerAt;
/**
* 最后一次登录时间
*/
private LocalDateTime lastLoginDate;
/**
* 登录次数
*/
private Integer loginCount;
}
package dev.lpf.seckilldemo.service;
import dev.lpf.seckilldemo.pojo.User;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* 秒杀项目
* <p>
* 服务类
* </p>
*
* @author RunAtWorld
* @since 2021-01-08
*/
public interface IUserService extends IService<User> {
}
package dev.lpf.seckilldemo.service.impl;
import dev.lpf.seckilldemo.pojo.User;
import dev.lpf.seckilldemo.mapper.UserMapper;
import dev.lpf.seckilldemo.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* 秒杀项目
* <p>
* 服务实现类
* </p>
*
* @author RunAtWorld
* @since 2021-01-08
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
}
package dev.lpf.seckilldemo.utils;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Component;
/**
* Md5 工具类
* Author: RunAtWorld
* Date: 2021/1/7 23:51
*/
@Component
public class Md5Util {
private static final String FINAL_SLAT = "1a2b3c4d";
public static String md5(String src) {
return DigestUtils.md5Hex(src);
}
/**
* 原始明文转成输入到数据库中的MD5
*
* @return
*/
public static String oriPass2InputPass(String ori) {
String str = FINAL_SLAT.charAt(0) + FINAL_SLAT.charAt(2) + ori + FINAL_SLAT.charAt(5) + FINAL_SLAT.charAt(6);
return md5(str);
}
/**
* 加密的密码转成md5存入数据库
*
* @param inPass
* @param salt
* @return
*/
public static String inputPass2DbPass(String inPass, String salt) {
String str = salt.charAt(5) + salt.charAt(3) + inPass + salt.charAt(1) + salt.charAt(4);
return md5(str);
}
/**
* 原始明文转成md5存入数据库
* @param ori
* @param salt
* @return
*/
public static String oriPass2DbPass(String ori, String salt) {
return inputPass2DbPass(oriPass2InputPass(ori), salt);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dev.lpf.seckilldemo.mapper.UserMapper">
</mapper>
package dev.lpf.seckilldemo.utils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Author: RunAtWorld
* Date: 2021/1/8 0:08
*/
public class Md5UtilTest {
private static final Logger logger = LoggerFactory.getLogger(Md5UtilTest.class);
@Test
void oriPass2InputPass() {
}
@Test
void inputPass2DbPass() {
}
@Test
void oriPass2DbPass() {
logger.info("res:{}", Md5Util.oriPass2DbPass("demo12", "78332io"));
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册