應用自定義密碼加密規則


開始吧

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、 測試即可

測試是成功的~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM