天天看點

MD5加密 web和main方法結果不同的問題

 最近做千牛插件開發,MD5加密判斷是否從千牛端進入的時候,MD5校驗總是錯誤。郁悶了很久,總以為MD5加密方法不對,但寫了main方法測試又是對的。最終解決方法如下:

public static String getMD5(String str){
	    try {
	        // 生成一個MD5加密計算摘要
	        MessageDigest md = MessageDigest.getInstance("MD5");
	        //這一句非常重要,沒有這一句就會出現web和main方法傳回結果不一緻的問題
	        md.update(str.getBytes("utf-8"));
	        // digest()最後确定傳回md5 hash值,傳回值為8為字元串。因為md5 hash值是16位的hex值,實際上就是8位的字元
	        // BigInteger函數則将8位的字元串轉換成16位hex值,用字元串來表示;得到字元串形式的hash值
	        return new BigInteger(1, md.digest()).toString(16);
	    } catch (Exception e) {
	    }
	    return str;
	}