255.Spring Boot+Spring Security:使用md5加密

說明css

(1)JDK版本:1.8java

(2)Spring Boot 2.0.6算法

(3)Spring Security 5.0.9spring

(4)Spring Data JPA 2.0.11.RELEASE數據庫

(5)hibernate5.2.17.Final安全

(6)MySQLDriver 5.1.47網絡

(7)MySQL 8.0.12session

 

需求緣起併發

       不少時候,咱們本身已經有現成的一套系統在運行了,這時候要接入spring security的話,那麼不免會碰到一個問題:就是本身設計的密碼加密方式和spring security提供的加密方式不同,那麼怎麼辦呢?因此這裏咱們要自定義下的加密方式,這個實現起來也是很簡單的,之前不少系統是使用的MD5加密的吧,那麼這裏使用MD5加密進行講解下。app

 

1、使用MD5加密

1.1 編寫MD5加密工具類

       既然要採用MD5加密的話,那麼就須要有MD5的加密算法,這個Java自己就提供了算法工具類,只是調用的時候,編碼會比較多,這裏咱們編寫成一個工具類,相似的代碼在網絡上也能找到不少相似的MD5加密算法編寫:

package com.kfit.config.util;

import java.security.MessageDigest;
/**
 * MD5加密工具
 */

public class MD5Util {
    private static final String SALT = "wuqian";
    public static String encode(String password) {
        password = password + SALT;
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        char[] charArray = password.toCharArray();
        byte[] byteArray = new byte[charArray.length];

        for (int i = 0; i < charArray.length; i++)
            byteArray[i] = (byte) charArray[i];
        byte[] md5Bytes = md5.digest(byteArray);
        StringBuffer hexValue = new StringBuffer();
        for (int i = 0; i < md5Bytes.length; i++) {
            int val = ((int) md5Bytes[i]) & 0xff;
            if (val < 16) {
                hexValue.append("0");
            }
            hexValue.append(Integer.toHexString(val));
        }
        return hexValue.toString();
    }
}

1.2 自定義加密算法

       自定義一個咱們本身的加密類,繼承PasswordEncoder,實現密碼加密和密碼匹配方法便可:

package com.kfit.config;

import org.springframework.security.crypto.password.PasswordEncoder;
import com.kfit.config.util.MD5Util;

public class MyPasswordEncoder implements PasswordEncoder{

    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        return encodedPassword.equals(MD5Util.encode((String)rawPassword));
    }

    @Override
    public String encode(CharSequence rawPassword) {
        return MD5Util.encode((String)rawPassword);
    }
}

1.3 替換原先的BCryptPasswordEncoder

       修改WebSecurityConfig方法:

@Bean  
public PasswordEncoder passwordEncoder() {  
    return new MyPasswordEncoder();
}    

       總體實現起來仍是很簡單的,到這裏就能夠進行從新啓動測試了,查看數據庫的密碼,已是md5生成的密碼方式了,到登陸頁面進行登陸,也是能夠登陸的,到這裏就大功告成了。

歷史文章

214. Spring Security:概述

215.Spring Boot+Spring Security:初體驗

216.Spring Boot+Spring Security:基於內存的認證信息

217.Spring Boot+Spring Security:基於內存的角色受權

218.Spring Boot+Spring Security:基於內存數據庫的身份認證和角色受權

219.Spring Boot+Spring Security:基於MySQL數據庫的身份認證和角色受權

220.Spring Boot+Spring Security:自定義登陸頁面和構建主頁

221.Spring Boot+Spring Security:登出和403處理

222.Spring&nbsp;Boot+Spring&nbsp;Security:動態加載角色

223.Spring&nbsp;Boot+Spring&nbsp;Security:原理1

224.Spring Boot+Spring Security:自定義Filter

246.Spring Boot+Spring Security:頁面白名單和獲取登陸信息

13. Spring Boot+Spring Security:基於URL動態權限n種方案

248.Spring Boot+Spring Security:基於URL動態權限:準備工做

249.Spring Boot+Spring Security:基於URL動態權限:擴展access()的SpEL表達式

250.Spring Boot+Spring Security:基於URL動態權限:自定義AccssDesionManager

251.Spring Boot+Spring Security:基於URL動態權限:自定義Filter

252.Spring Boot+Spring Security:標籤sec:authorize的使用

253.Spring Boot+Spring Security:獲取用戶信息和session併發控制

254.Security註解:@PreAuthorize,@PostAuthorize, @Secured, EL實現方法安全

我就是我,是顏色不同的煙火。
我就是我,是不同凡響的小蘋果。

à悟空學院:http://t.cn/Rg3fKJD

學院中有Spring Boot相關的課程!點擊「閱讀原文」進行查看!

SpringBoot視頻:http://t.cn/R3QepWG

Spring Cloud視頻:http://t.cn/R3QeRZc

SpringBoot Shiro視頻:http://t.cn/R3QDMbh

SpringBoot交流平臺:http://t.cn/R3QDhU0

SpringData和JPA視頻:http://t.cn/R1pSojf

SpringSecurity5.0視頻:http://t.cn/EwlLjHh

Sharding-JDBC分庫分表實戰:http://t.cn/E4lpD6e

相關文章
相關標籤/搜索