最近做千牛插件開發,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;
}