SpringBoot框架的MD5加密方式
SpringBoot框架MD5加密
一般來說,為了數(shù)據(jù)的安全性,需要對(duì)密碼進(jìn)行兩次MD5加密,第一次是在前端輸入完明文密碼后加密,第二次是在后端接收到前端經(jīng)過MD5加密的密碼后,存到數(shù)據(jù)庫前進(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微信二次開發(fā)(三) Java微信各類型消息封裝
這篇文章主要為大家詳細(xì)介紹了Java微信二次開發(fā)第三篇,Java微信各類型消息封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04java IO實(shí)現(xiàn)電腦搜索、刪除功能的實(shí)例
下面小編就為大家?guī)硪黄猨ava IO實(shí)現(xiàn)電腦搜索、刪除功能的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12Java布爾值Boolean和boolean之間轉(zhuǎn)換實(shí)例用法
在本篇文章里小編給大家整理的是一篇關(guān)于Java布爾值Boolean和boolean之間轉(zhuǎn)換實(shí)例用法內(nèi)容,有需要的朋友們跟著學(xué)習(xí)參考下。2021-06-06Servlet+JDBC實(shí)現(xiàn)登陸功能的小例子(帶驗(yàn)證碼)
這篇文章主要介紹了Servlet+JDBC實(shí)現(xiàn)登陸功能的小例子(帶驗(yàn)證碼),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06實(shí)戰(zhàn)分布式醫(yī)療掛號(hào)系統(tǒng)登錄接口整合阿里云短信詳情
這篇文章主要為大家介紹了實(shí)戰(zhàn)分布式醫(yī)療掛號(hào)系統(tǒng)登錄接口整合阿里云短信詳情,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2022-04-04