Java生成MD5
package com.pibigstar.common.utils;
import java.security.MessageDigest;
/**
* MD5加密工具类
* @author pibigstar
*
*/
public class MyMD5Util {
//盐,用于混交md5
private static final String slat = "&%5123***&&%%$$#@";
public static String encrypt(String dataStr) {
try {
dataStr = dataStr + slat;
MessageDigest m = MessageDigest.getInstance("MD5");
m.update(dataStr.getBytes("UTF8"));
byte s[] = m.digest();
String result = "";
for (int i = 0; i < s.length; i++) {
result += Integer.toHexString((0x000000FF & s[i]) | 0xFFFFFF00).substring(6);
}
return result;
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
/**
其中,Integer.toHexString((0x000000FF & s[i]) | 0xFFFFFF00).substring(6)的作用 是显示一个byte型的单字节十六进制(两位十六进制表示)的编码。
byteVar & 0x000000FF的作用是,如果byteVar 是负数,则会清除前面24个零,正的byte整型不受影响。(…) | 0xFFFFFF00的作用是,如果byteVar 是正数,
则置前24位为一,这样toHexString输出一个小于等于15的byte整型的十六进制时,倒数第二位为零且不会被丢弃,这样可以通过substring方法进行截取最后两位即可。
**/
其中,Integer.toHexString((0x000000FF & s[i]) | 0xFFFFFF00).substring(6)的作用 是显示一个byte型单字节十六进制(两位十六进制表示)的编码。byteVar & 0x000000FF的作用是,如果byteVar 是负数,则会清除前面24个零,正的byte整型不受影响。(…) | 0xFFFFFF00的作用是,如果byteVar 是正数,则置前24位为一,这样toHexString输出一个小于等于15的byte整型的十六进制时,倒数第二位为零且不会被丢弃,这样可以通过substring方法进行截取最后两位即可。
方法2
public class MD5Util {
public static String getMD5Str(String str) {
byte[] digest = null;
try {
MessageDigest md5 = MessageDigest.getInstance("md5");
digest = md5.digest(str.getBytes("utf-8"));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//16是表示转换为16进制数
String md5Str = new BigInteger(1, digest).toString(16);
return md5Str;
}
}
2 使用Spring中的工具类
package com.pibigstar.common.utils;
import org.springframework.util.DigestUtils;
import com.pibigstar.common.Constant;
/**
* MD5工具类
* @author pibigstar
*
*/
public class MD5Util {
//盐,用于混交md5
private static final String slat = "&%5123***&&%%$$#@";
/**
* 生成md5
* @param seckillId
* @return
*/
public static String getMD5(String str) {
String base = str +"/"+slat;
String md5 = DigestUtils.md5DigestAsHex(base.getBytes());
return md5;
}
}