Java的摘要算法通过MessageDigest可使用。此 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
1.MD5
介绍
消息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
使用示例
MessageDigest md = MessageDigest.getInstance("MD5");
String text = "12345688888888";
byte[] result = md.digest(text.getBytes());
String r = "";
for(int i=0; i<result.length; i++){
//与0xFF做“&”运算,是因为byte转int,正数存储的二进制原码,负数存储的是二进制的补码。
//补码是负数的绝对值反码加1。
String hs = Integer.toHexString(result[i] & 0xFF);
if(hs.length() == 1){
r = r + "0" + hs;
}else{
r = r + hs;
}
}
System.out.println(r);
System.out.println(r.toUpperCase());