利用JavaAPI中自带的java.security,MessageDigest可以实现(同时需要注意的还有十六进制,char字符,byte字符转化问题)
/**
* MD5压缩算法
* @param source
* @return
*/
public static String getMD5(byte[] source){
String s = null;
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);
byte[] tmp = md.digest();//返回值为8位字符串,16byte,16*8 bits,16*2 十六进制数
//System.out.println(tmp.toString());
char[] str = new char[16*2];//char占用两字节转化成十六进制需要32个字符
int k = 0;
for(int i = 0; i < 16; i ++){
byte byte0 = tmp[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];//0xf是低四位为1其余为0的数,与运算为取出低四位
str[k +&