分享一個MD5加密的工具類

package Utile;

import java.math.BigInteger;
import java.security.MessageDigest;

/**
 * 對密碼進行MD5加密的工具類
 * static與非static類區別:
 * 非static類,別的類應用此類方法是需實例化對象,臨時分配內存至JVM,會自動關閉
 * static類中的方法,靜態化後內存會一直分配一塊空間給此類用來引用,直至程序關閉,不需實例化
 * 
 * @author Joy
 * 
 */

public  class MD5_Utile {
	//由於工具類方法不須要實例化	
	// 生成16位MD5密文
		public static String getMD5(String c_password) {
			try {
				// 生成一個MD5加密計算摘要
				MessageDigest md = MessageDigest.getInstance("MD5");
				// 調用update方法計算MD5函數(參數:將密碼串轉換爲操做系統的字節編碼)
				md.update(c_password.getBytes());
				// digest()最後返回md5的hash值,返回值爲8位的字符串,但此方法要先調用update
				// BigInteger函數則將8位的字符串轉換成16位hex值,用字符串來表示;獲得字符串形式的hash值,數值從1開始
				// BigInteger會把0省略掉,需補全至32位,重寫一個方法將16位數轉換爲32位數
				String md5 = new BigInteger(1, md.digest()).toString(16);
				return fillMD5(md5);
			} catch (Exception e) {
				throw new RuntimeException("MD5加密錯誤:" + e.getMessage(), e);
			}
		}

		// 將16位數轉爲32位
		public static String fillMD5(String md5) {
			return md5.length() == 32 ? md5 : fillMD5("0" + md5);
		}	
}
相關文章
相關標籤/搜索