MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文件是否一致的。
小编在日常使用中发现,MD5加密有多种,而第三方只会告诉你他们使用的是MD5加密并不会告诉你是那种方法。因此小编在这里提供小编在日常使用过的两种方法:
第一种:
package hehe.md5;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Str2MD5 {
public String MD5(String sourceStr) {
String result = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(sourceStr.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
//buf.append(String.format("%02X", b[offset]));
}
result = buf.toString();
// String a = result.toUpperCase();
// System.out.println("MD5(" + sourceStr + ",32) = " + result);
// System.out.println("MD5 32大写:"+a);
// System.out.println("MD5(" + sourceStr + ",16) = " + buf.toString().substring(8, 24));
} catch (NoSuchAlgorithmException e) {
System.out.println(e);
}
return result;
}
}
第二种:先写一个Util类
}
关于MD5 的大小写转换以及 32位于16位可以使用 toUpperCase() toLowerCase() substring(8, 24) 来进行转换,还有16位加密根据甲方的要求来截取