Spring Boot项目开发(四)——用户注册密码加密

本文介绍了如何在Java中实现MD5加盐加密,通过创建MD5Utils工具类进行密码加密,并定义Constant类存储盐值。在UserService中,使用MD5Utils对用户注册时的密码进行加密处理,确保了密码的安全性,防止了因简单加密导致的密码破解问题。
摘要由CSDN通过智能技术生成

1、编写MD5加密工具类

加密过程需要对密码加盐,否则可以通过网络工具轻易解密出密码

package com.learn.mall.util;

import com.learn.mall.common.Constant;
import org.apache.tomcat.util.codec.binary.Base64;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密工具
 */
public class MD5Utils {
    public static String getMD5Str(String val) throws NoSuchAlgorithmException {
        MessageDigest md5 = MessageDigest.getInstance("MD5");
        return Base64.encodeBase64String(md5.digest((val+Constant.SALT).getBytes()));
    }

    public static void main(String[] args) {
        try {
            System.out.println(getMD5Str("yang"+Constant.SALT));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

 2、定义盐的常量类

定义盐时尽量复杂,否则加盐没有任何意义

package com.learn.mall.common;

/**
 * 常量值
 */
public class Constant {
    //加盐
    public static final String SALT = "2wef65h#$%JVG<:}{>";
   
}

3、使用方法

package com.learn.mall.service.impl;

import com.learn.mall.exception.LearnMallException;
import com.learn.mall.exception.LearnMallExceptionEnum;
import com.learn.mall.model.dao.UserMapper;
import com.learn.mall.model.pojo.User;
import com.learn.mall.service.UserService;
import com.learn.mall.util.MD5Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.security.NoSuchAlgorithmException;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    UserMapper userMapper;

    @Override
    public void register(String username, String password) throws LearnMallException {
        //查询用户是否存在,不允许重名
        User result = userMapper.selectByName(username);
        if (result != null) {
            throw new LearnMallException(LearnMallExceptionEnum.USERNAME_EXISTED);
        }
        //用户不存在,执行插入操作
        User user = new User();
        user.setUsername(username);
        //对密码进行MD5加密并加盐
        try {
            user.setPassword(MD5Utils.getMD5Str(password));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        int count = userMapper.insertSelective(user);
        if(count == 0){
            throw new LearnMallException(LearnMallExceptionEnum.INSERT_FAILED);
        }
    }
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值