• 【MD5】采用MD5+盐的加密方式完成注册用户和登录账号


    MD5的pom

    1. <dependency>
    2. <groupId>commons-codecgroupId>
    3. <artifactId>commons-codecartifactId>
    4. dependency>

    需求分析

    1. 注册用户时,注册的密码在数据库中进行加密
    2. 登入用户时,采用MD5验证后密码正确登录用户

    需求解决

    1. 数据库建表时,在user表中设置一个slat列,每一次注册用户时,生成一个独一无二的slat(盐)写入数据库slat列,并使用md5+slat的方式进行密码加密,写入数据库password列。
    2. 登录用户时,先根据userid获得slat,输入密码和md5+slat加密之后得到的password和数据库password对比,相同,则登入成功。

    注册用户代码

    1.生成slat的工具类(自己随便写的,保证生成的数字不一样就行)

    1. public class SlatUtile {
    2. public static Integer createSlat(){
    3. int i = new Random().nextInt();
    4. return i;
    5. }
    6. }

    2.注册用户mapper

    1. @Repository
    2. public interface AddUserMapper {
    3. @Insert("insert into user(userid,username,phonenumber,password,slat)value(#{userid},#{username},#{phonenumber},#{password},#{slat})")
    4. Integer addUser(Integer userid, String username,String phonenumber,String password,Integer slat);
    5. }

    3.注册用户service

    1. //service接口
    2. public interface AddUserService {
    3. Integer addUser(Integer userid, String username,String phonenumber,String password,Integer slat);
    4. }
    1. @Service
    2. public class AddUserServiceImp implements AddUserService {
    3. @Autowired
    4. private AddUserMapper addUserMapper;
    5. //注册新用户,密码进行采用MD5+盐加密
    6. @Override
    7. public Integer addUser(Integer userid,String username,String phonenumber,String password,Integer slat) {
    8. Integer slatforthis = SlatUtile.createSlat(); //每次用户注册新生成一个salt
    9. String md5password = DigestUtils.md5Hex(password+slatforthis); //对密码进行加密
    10. Integer integer = addUserMapper.addUser(userid, username, phonenumber, md5password,slatforthis);
    11. return integer;
    12. }
    13. }

    4.注册用户controller

    1. @RestController
    2. public class AddUserController {
    3. @Autowired
    4. private AddUserService addUserService;
    5. @RequestMapping("adduser")
    6. public String adduser(Integer userid, String username, String phonenumber, String password,Integer slat) {
    7. Integer integer = addUserService.addUser(userid, username, phonenumber, password,slat);
    8. if (integer == 1){
    9. return "新建用户完成";
    10. }else {
    11. return "新建用户失败";
    12. }
    13. }
    14. }

    5.测试

    注册密码为111

     数据库密码完成加密,如图所示


    登录用户代码

    首先需要个根据userid查找user的查找代码,这里我就不写了(为了获取slat)

    1.登入用户mapper

    1. @Repository
    2. public interface LoginMapper {
    3. @Select("select * from user where userid = #{userid} and password = #{password}")
    4. UserVO login(Integer userid,String password);
    5. }

    2.登入用户service

    1. //接口层
    2. public interface Md5LoginService {
    3. UserVO login(Integer userid, String password);
    4. }
    1. @Service
    2. public class Md5LoginServiceImp implements Md5LoginService {
    3. @Autowired
    4. private LoginMapper loginMapper;
    5. @Autowired
    6. private FindUserbyIdMapper findUserbyIdMapper;
    7. @Override
    8. public UserVO login(Integer userid, String password) {
    9. UserVO user = findUserbyIdMapper.findUserById(userid); //根据userid查找user
    10. String salt = user.getSlat(); //获得当前用户的salt
    11. String md5password = DigestUtils.md5Hex(password + salt); //获得加密密码
    12. UserVO userVO = loginMapper.login(userid, md5password);
    13. return userVO;
    14. }
    15. }

    主要逻辑是如果输入的未加密密码和slat正确,加密后得到的字段和数据库的password字段是相同的

    3.登入用户controller

    1. @RestController
    2. public class Md5LoginController {
    3. @Autowired
    4. private Md5LoginService md5LoginService;
    5. @RequestMapping("md5login")
    6. public UserVO md5login (Integer userid,String password){
    7. UserVO userVO = md5LoginService.login(userid, password);
    8. return userVO;
    9. }
    10. }

    4.验证

    登入成功(密码111)

     

    登入失败,未作处理 

  • 相关阅读:
    msvcp140.dll丢失的解决方法与msvcp140.dll是什么东西详细解析
    Webpack
    LeetCode //C - 9. Palindrome Number
    java家教平台系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    C/C++ 基础知识总结
    Modelsim与Vivado版本匹配说明
    给MuMu模拟器安装证书
    冗余是什么
    springboot 集成 apollo
    实时的语音降噪神经网络算法
  • 原文地址:https://blog.csdn.net/m0_46628950/article/details/126149474