public String getMD5(byte[] source){
String s=null;
//用來將字節轉換成16進製表示的字符
char[] hexDigits={'0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f'};
try {
MessageDigest md=MessageDigest.getInstance("MD5");
md.update(source);
//MD5的計算結果是一個128位的長整數,用字節表示爲16個字節
byte[] tmp=md.digest();
//每個字節用16進製表示的話,使用2個字符(高4位一個,低4位一個),所以表示成16進制需要32個字符
char[] str=new char[16*2];
int k=0;//轉換結果中對應的字符位置
for(int i=0;i<16;i++){//對MD5的每一個字節轉換成16進制字符
byte byte0=tmp[i];
str[k++]=hexDigits[byte0>>>4 & 0xf];//對字節高4位進行16進制轉換
str[k++]=hexDigits[byte0 & 0xf]; //對字節低4位進行16進制轉換
}
s=new String(str);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return s;
}
調用:String md5key = getMD5(md5String.getBytes("UTF-8")); //md5String 爲要加密的字符串