应用自定义密码加密规则

开始吧

1、 认识MD5

简单理解:是一个算法(消息摘要算法)。实现原理

2、 自定义类MyPasswordEncoderService实现PasswordEncoder接口

package com.zhoujinyuan.springsecurity.service;

import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Objects;

@Component
public class MyPasswordEncoderService implements PasswordEncoder {

    /**
     * 进行加密的方法
     *
     * @param rawPassword   未加密的密码
     * @return
     */
    @Override
    public String encode(CharSequence rawPassword) {
        return privateEncode(rawPassword);
    }

    /**
     * 进行密码比对的方法
     *
     * @param rawPassword       未加密的密码
     * @param encodedPassword   加密的密码
     * @return
     */
    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        return Objects.equals(privateEncode(rawPassword),encodedPassword);

    }

    /**
     * 加密方法
     */
    private String privateEncode(CharSequence rawPassword){
        String algorithm = "MD5";
        String encoded = null;
        try {
            MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
            // 获取输入的字节数组
            byte[] input = ((String) rawPassword).getBytes();
            // 加密
            byte[] output = messageDigest.digest(input);
            // 将加密后的字节数组转成 16 进制
            encoded = new BigInteger(1, output).toString(16).toUpperCase();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return encoded;
    }
}

3、 去配置类配置

    //重写另外一个父类的方法,来设置登录系统的账号密码(走数据库)
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        //使用自定义 MyUserDetailsService 完成登录
        auth
                //走账号密码验证的方法
                .userDetailsService(myUserDetailsService)
                //走给输入的密码加密和比对两个方法
                .passwordEncoder(myPasswordEncoderService);
    }

4、 测试即可

测试是成功的~

原文地址:https://www.cnblogs.com/jinyuanya/p/13950628.html