Java語(yǔ)言描述MD5加密工具類(lèi)實(shí)例代碼
編程中經(jīng)常有用到MD5加密的情況,Java語(yǔ)言并沒(méi)有像PHP一樣提供原生的MD5加密字符串的函數(shù),需要MD5加密的時(shí)候,往往需要自己寫(xiě)。
代碼如下:
import java.security.MessageDigest; public class MD5 { //公鹽 private static final String PUBLIC_SALT = "demo" ; //十六進(jìn)制下數(shù)字到字符的映射數(shù)組 private final static String[] hexDigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; /** * 用戶密碼加密,鹽值為 :私鹽+公鹽 * @param password 密碼 * @param salt 私鹽 * @return MD5加密字符串 */ public static String encryptPassword(String password,String salt){ return encodeByMD5(PUBLIC_SALT+password+salt); } /** * md5加密算法 * @param originString * @return */ private static String encodeByMD5(String originString){ if (originString != null){ try{ //創(chuàng)建具有指定算法名稱的信息摘要 MessageDigest md = MessageDigest.getInstance("MD5"); //使用指定的字節(jié)數(shù)組對(duì)摘要進(jìn)行最后更新,然后完成摘要計(jì)算 byte[] results = md.digest(originString.getBytes()); //將得到的字節(jié)數(shù)組變成字符串返回 String resultString = byteArrayToHexString(results); return resultString.toUpperCase(); } catch(Exception ex){ ex.printStackTrace(); } } return null; } /** * 轉(zhuǎn)換字節(jié)數(shù)組為十六進(jìn)制字符串 * @param 字節(jié)數(shù)組 * @return 十六進(jìn)制字符串 */ private static String byteArrayToHexString(byte[] b){ StringBuffer resultSb = new StringBuffer(); for (int i = 0; i < b.length; i++){ resultSb.append(byteToHexString(b[i])); } return resultSb.toString(); } /** 將一個(gè)字節(jié)轉(zhuǎn)化成十六進(jìn)制形式的字符串 */ private static String byteToHexString(byte b){ int n = b; if (n < 0) n = 256 + n; int d1 = n / 16; int d2 = n % 16; return hexDigits[d1] + hexDigits[d2]; } }
總結(jié)
以上就是本文關(guān)于Java語(yǔ)言描述MD5加密工具類(lèi)實(shí)例代碼的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他Java相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
JAVA實(shí)現(xiàn)異步調(diào)用實(shí)例代碼
在java平臺(tái),實(shí)現(xiàn)異步調(diào)用的角色主要三種角色:調(diào)用者、取貨憑證、真實(shí)數(shù)據(jù)。本篇文章給大家介紹java實(shí)現(xiàn)異步調(diào)用實(shí)例代碼,需要的朋友可以參考下2015-09-09IDEA安裝阿里巴巴編碼規(guī)范插件的兩種方式詳解(在線安裝和離線安裝)
這篇文章主要介紹了IDEA安裝阿里巴巴編碼規(guī)范插件的兩種方式詳解(在線安裝和離線安裝),本文通過(guò)截圖給大家展示的非常詳細(xì),需要的朋友可以參考下2021-09-09Springmvc文件上傳實(shí)現(xiàn)流程解析
這篇文章主要介紹了Springmvc文件上傳實(shí)現(xiàn)流程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Java動(dòng)態(tài)代理分析及簡(jiǎn)單實(shí)例
這篇文章主要介紹了 Java動(dòng)態(tài)代理分析及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-02-02編譯期動(dòng)態(tài)替換三方包中的Class文件過(guò)程詳解
這篇文章主要為大家介紹了編譯期動(dòng)態(tài)替換三方包中的Class文件過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Java并發(fā)編程-volatile可見(jiàn)性詳解
這篇文章主要介紹了Java并發(fā)編程-volatile可見(jiàn)性詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之2-3-4樹(shù)
這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之2-3-4樹(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01SpringIOC DI循環(huán)依賴實(shí)例詳解
這篇文章主要介紹了SpringIOC——DI循環(huán)依賴,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03