SpringBoot框架的MD5加密方式
SpringBoot框架MD5加密
一般來說,為了數(shù)據(jù)的安全性,需要對(duì)密碼進(jìn)行兩次MD5加密,第一次是在前端輸入完明文密碼后加密,第二次是在后端接收到前端經(jīng)過MD5加密的密碼后,存到數(shù)據(jù)庫(kù)前進(jìn)行MD5加密。
具體流程參考如下:
導(dǎo)入相關(guān)依賴
? ? ? ? <dependency> ? ? ? ? ? ? <groupId>commons-codec</groupId> ? ? ? ? ? ? <artifactId>commons-codec</artifactId> ? ? ? ? </dependency> ? ? ? ? <dependency> ? ? ? ? ? ? <groupId>org.apache.commons</groupId> ? ? ? ? ? ? <artifactId>commons-lang3</artifactId> ? ? ? ? ? ? <version>3.6</version> ? ? ? ? </dependency>? ? ? ??
創(chuàng)建MD5工具類
@Component
public class MD5Utils {
? ? public static String md5(String src){
? ? ? ? return DigestUtils.md5Hex(src);
? ? }
? ? private static final String salt = "1a2b3c4d";
?
? ? //第一次加密
? ? public static String inputPassToFormPass(String inputPass){
? ? ? ? //md5加密密碼前,先對(duì)密碼進(jìn)行處理,按以下salt的規(guī)則處理密碼
? ? ? ? String str = "" + salt.charAt(0) + salt.charAt(2) + inputPass + salt.charAt(5) + salt.charAt(4);
? ? ? ? return md5(str);
? ? }
? ? //第二次加密
? ? public static String formPassToDBPass(String formPass, String salt){
? ? ? ? String str = "" + salt.charAt(0) + salt.charAt(2) + formPass + salt.charAt(5) + salt.charAt(4);
? ? ? ? return md5(str);
? ? }
? ? //實(shí)際調(diào)用的方法,將第一次加密和第二次加密合并,結(jié)果應(yīng)該一致
? ? public static String inputPassToDBPass(String inputPass, String salt){
? ? ? ? String formPass = inputPassToFormPass(inputPass);
? ? ? ? String dbPass = formPassToDBPass(formPass, salt);
? ? ? ? return dbPass;
? ? }
?
? ? public static void main(String[] args) {
? ? ? ? //d3b1294a61a07da9b49b6e22b2cbd7f9
? ? ? ? System.out.println(inputPassToFormPass("123456"));
? ? ? ? //b7797cce01b4b131b433b6acf4add449
? ? ? ? System.out.println(formPassToDBPass("d3b1294a61a07da9b49b6e22b2cbd7f9","1a2b3c4d"));
? ? ? ? //b7797cce01b4b131b433b6acf4add449
? ? ? ? System.out.println(inputPassToDBPass("123456","1a2b3c4d"));
?
? ? }
}SpringBoot自帶MD5加密
導(dǎo)入包
import org.springframework.util.DigestUtils;
對(duì)密碼進(jìn)行 md5 加密
String md5Password = DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java?Collection接口中的常用方法總結(jié)
這篇文章將大概用代碼案例簡(jiǎn)單總結(jié)一下?Collection?接口中的一些方法,我們會(huì)以他的實(shí)現(xiàn)類?Arraylist?為例創(chuàng)建對(duì)象??煲黄饋砜纯窗?/div> 2022-12-12
常用的Java數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn)匯總
這篇文章主要介紹了常用的Java數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn)匯總,數(shù)據(jù)結(jié)構(gòu)分線性數(shù)據(jù)結(jié)構(gòu)和非線性數(shù)據(jù)結(jié)構(gòu),下面對(duì)此作詳細(xì)介紹,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)或工作有所幫助2022-03-03
RestClient?通過攔截器實(shí)現(xiàn)請(qǐng)求加密的示例
本文介紹了如何通過攔截器實(shí)現(xiàn)請(qǐng)求加密,并通過RestClient優(yōu)化了加密過程,傳統(tǒng)的加密方法依賴對(duì)象轉(zhuǎn)換和序列化處理,容易導(dǎo)致加密不一致或難以調(diào)試的問題,通過引入攔截器,可以直接操作請(qǐng)求體,避免了不必要的轉(zhuǎn)換步驟,確保加密過程與請(qǐng)求體完全一致,感興趣的朋友一起看看吧2025-02-02
springboot基于keytool實(shí)現(xiàn)https的雙向認(rèn)證示例教程
這篇文章主要介紹了springboot基于keytool實(shí)現(xiàn)https的雙向認(rèn)證,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
SpringSecurity實(shí)現(xiàn)前后端分離登錄token認(rèn)證詳解
目前市面上比較流行的權(quán)限框架主要實(shí)Shiro和Spring Security,這兩個(gè)框架各自側(cè)重點(diǎn)不同,各有各的優(yōu)劣,本文將給大家詳細(xì)介紹SpringSecurity如何實(shí)現(xiàn)前后端分離登錄token認(rèn)證2023-06-06
java并發(fā)請(qǐng)求下數(shù)據(jù)插入重復(fù)問題的解決方法
現(xiàn)在遇到一個(gè)項(xiàng)目,移動(dòng)設(shè)備存儲(chǔ)數(shù)據(jù),然后一起上傳,那就出現(xiàn)了許多重復(fù)數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于java并發(fā)請(qǐng)求下數(shù)據(jù)插入重復(fù)問題的解決方法,需要的朋友可以參考下2021-11-11
mybatis定義sql語句標(biāo)簽之delete標(biāo)簽解析
這篇文章主要介紹了mybatis定義sql語句標(biāo)簽之delete標(biāo)簽解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03最新評(píng)論

