大家可以对同一个串进行多次的摘要计算,查看多次摘要算法的值是否相同。
目前java6本身只是支持MD2和MD5的消息摘要实现
应用:这种摘要算法主要用来校验文件是否被获取的准确性。大家到apache的官方下载的文件的时候通常配备一些消息摘要算法进行验证
如下是实现的代码:
package com.ca.test;
import java.security.MessageDigest;
/**
* jdk6本身支持的MD2和MD5的算法实现
* @author kongqz
* */
public class MDCoder {
/**
* MD2的消息摘要算法实现
* @param data 要做消息摘要的数据
* @return byte[] 消息摘要
*
* */
public static byte[] encodeMD2(byte[] data) throws Exception{
//初始化MessageDigest
MessageDigest md=MessageDigest.getInstance("MD2");
return md.digest(data);
}
/**
* MD5的消息摘要算法实现
* @param data 要做消息摘要的数据
* @return byte[] 消息摘要
*
* */
public static byte[] encodeMD5(byte[] data) throws Exception{
//初始化MessageDigest
MessageDigest md=MessageDigest.getInstance("MD5");
return md.digest(data);
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
String str="java 6 的消息摘要算法";
System.out.println("原文:"+str);
byte[] data1=MDCoder.encodeMD2(str.getBytes());
System.out.println("MD2的消息摘要算法值:"+data1.toString());
byte[] data2=MDCoder.encodeMD5(str.getBytes());
System.out.println("MD5的消息摘要算法值:"+data2.toString());
}
}
控制台输出如下:
原文:java 6 的消息摘要算法
MD2的消息摘要算法值:[B@1fb8ee3
MD5的消息摘要算法值:[B@14318bb