这里给出两种相同的方法
方法一
/**
* 利用MD5进行加密
*
* @param str 待加密的字符串
* @return 加密后的字符串
* @throws Exception
*/
public static String encodeByMd5(String str) {
MessageDigest md;
try {
// 生成一个MD5加密计算摘要
md = MessageDigest.getInstance("MD5");
// 计算md5函数
md.update(str.getBytes());
// digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
// BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
String pwd = new BigInteger(1, md.digest()).toString(16);
return pwd.toUpperCase();
} catch (Exception e) {
e.printStackTrace();
return str;
}
}
方法二
public static String encodeByMd5(String data) {
try {
byte[] bytes = MessageDigest.getInstance("MD5").digest(data.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
if ((b & 0xff) < 16)
sb.append("0");
sb.append(Long.toString(b & 0xff, 16));
}
return sb.toString().toUpperCase();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
MD5Util.java
import java.math.BigInteger;
import java.security.MessageDigest;
public class MD5Util {
/**
* 利用MD5进行加密
*
* @param str 待加密的字符串
* @return 加密后的字符串
* @throws Exception
*/
public static String encodeByMd5(String data) {
try {
byte[] bytes = MessageDigest.getInstance("MD5").digest(data.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
if ((b & 0xff) < 16)
sb.append("0");
sb.append(Long.toString(b & 0xff, 16));
}
return sb.toString().toUpperCase();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
public static void main(String[] args) {
System.out.println(encodeByMd5("123qwe"));
}
}
Comments | 0 条评论