編程中經常有用到MD5加密的情況,Java語言並沒有像PHP一樣提供原生的MD5加密字符串的函數,需要MD5加密的時候,往往需要自己寫。
代碼如下:
import java.security.MessageDigest;public class MD5 {//公鹽private static final String PUBLIC_SALT = "demo" ;//十六進制下數字到字符的映射數組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{//創建具有指定算法名稱的信息摘要MessageDigest md = MessageDigest.getInstance("MD5");//使用指定的字節數組對摘要進行最後更新,然後完成摘要計算byte[] results = md.digest(originString.getBytes());//將得到的字節數組變成字符串返回String resultString = byteArrayToHexString(results);return resultString.toUpperCase();}catch(Exception ex){ex.printStackTrace();}}return null;}/** * 轉換字節數組為十六進製字符串* @param 字節數組* @return 十六進製字符串*/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();}/** 將一個字節轉化成十六進制形式的字符串*/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];}}總結
以上就是本文關於Java語言描述MD5加密工具類實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他Java相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!