importjava.math.BigInteger;importjava.security.MessageDigest;public classAppMD5Util {/*** 对字符串md5加密(小写+字母)
*
*@paramstr 传入要加密的字符串
*@returnMD5加密后的字符串*/
public staticString littleMD5a(String str) {try{//生成一个MD5加密计算摘要
MessageDigest md = MessageDigest.getInstance("MD5");//计算md5函数
md.update(str.getBytes());//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) {
e.printStackTrace();return null;
}
}//16位是将32位中的16截取出来
public staticString little16MD5a(String str) {return littleMD5a(str).substring(8, 24);
}/*** 对字符串md5加密(大写+数字)
*
*@paramstr 传入要加密的字符串
*@returnMD5加密后的字符串*/
public staticString BigMD55(String string) {char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};try{byte[] btInput =string.getBytes();//获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");//使用指定的字节更新摘要
mdInst.update(btInput);//获得密文
byte[] md =mdInst.digest();//把密文转换成十六进制的字符串形式
int j =md.length;char str[] = new char[j * 2];int k = 0;for (int i = 0; i < j; i++) {byte byte0 =md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}return newString(str);
}catch(Exception e) {
e.printStackTrace();return null;
}
}//16位是将32位中的16截取出来
public staticString Big16MD55(String str) {return BigMD55(str).substring(8, 24);
}//获取SHA1加密值
public staticString getSHA1(String str){if(str==null||str.length()==0){return null;
}char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};try{
MessageDigest mdTemp= MessageDigest.getInstance("SHA1");
mdTemp.update(str.getBytes("UTF-8"));byte[] md =mdTemp.digest();int j =md.length;char buf[] = new char[j*2];int k = 0;for (int i = 0; i < j; i++) {byte byte0 =md[i];
buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
buf[k++] = hexDigits[byte0 & 0xf];
}return newString(buf);
}catch(Exception e) {return null;
}
}public static voidmain(String[] args) {
String bigmd5= BigMD55("miniprograme");
System.err.println("32大写加数字 "+bigmd5);long Time13 =System.currentTimeMillis();
System.out.println(Time13);
String postbigmd5time= "POST"+bigmd5+Time13;
System.err.println("post32大写加数字 时间戳 "+postbigmd5time);
System.out.println("最终的sign值 "+getSHA1(postbigmd5time));
System.err.println("最终的sign值 "+getSHA1(postbigmd5time));
System.out.println(Time13);
}
}