消息摘要算法

文中代码用到codec和bouncycastle,需要加到classpath里。

其中md4和sha-244会用到bouncycastle。

MD系列:

 

package md;

import java.security.MessageDigest;
import java.security.Security;

import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class MD_Test {

	/**
	 * @param args
	 */
	public static void main(String[] args)  throws Exception {
		String str = "测试摘要算法";
		
		MD_Test mdTest = new MD_Test();
		byte[] data_md2 = mdTest.encodeMD2(str.getBytes());
		byte[] data_md5 = mdTest.encodeMD5(str.getBytes());
		byte[] data_md4 = mdTest.encodeMD4_bc(str.getBytes());
		
		System.out.println(str);
		System.out.println("md2="+Hex.encodeHexString(data_md2));
		System.out.println("md5="+Hex.encodeHexString(data_md5));
		System.out.println("md5_codec="+mdTest.encodeMD5_codec(str.getBytes()));
		System.out.println("md4_bc="+Hex.encodeHexString(data_md4));
		
		
	}
	
	public byte[] encodeMD2(byte[] data) throws Exception {
		//初始化MessageDigest
		MessageDigest md = MessageDigest.getInstance("MD2");
		//执行消息摘要
		return md.digest(data);
	}
	
	public byte[] encodeMD5(byte[] data) throws Exception {
		//初始化MessageDigest
		MessageDigest md = MessageDigest.getInstance("MD5");
		//执行消息摘要
		return md.digest(data);
	}
	
	public String encodeMD5_codec(byte[] data) throws Exception {
		return DigestUtils.md5Hex(data);
	}
	
	public byte[] encodeMD4_bc(byte[] data) throws Exception {
		//加入BouncyCastleProvider支持
		Security.addProvider(new BouncyCastleProvider());
		
		//初始化MessageDigest
		MessageDigest md = MessageDigest.getInstance("MD4");
		//执行消息摘要
		return md.digest(data);
	}

}

SHA系列:

 

package md;

import java.security.MessageDigest;
import java.security.Security;

import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class SHA_Test {
	
	public static void main(String[] args) throws Exception{
		String str = "测试摘要算法SHA";
		
		SHA_Test shaTest = new SHA_Test();
		byte[] data_sha = shaTest.encodeSHA1(str.getBytes());
		byte[] data_sha512 = shaTest.encodeSHA512(str.getBytes());
		byte[] data_sha224 = shaTest.encodeSHA224_bc(str.getBytes());
		
		System.out.println(str);
		System.out.println("SHA="+Hex.encodeHexString(data_sha));
		System.out.println("SHA_codec="+shaTest.encodeSHA_codec(str.getBytes()));
		System.out.println("SHA-512="+Hex.encodeHexString(data_sha512));
		System.out.println("SHA-224="+Hex.encodeHexString(data_sha224));
	}

	public byte[] encodeSHA1(byte[] data) throws Exception {
		//初始化MessageDigest
				MessageDigest md = MessageDigest.getInstance("SHA");
				//执行消息摘要
				return md.digest(data);
	}
	public byte[] encodeSHA512(byte[] data) throws Exception {
		//初始化MessageDigest
		MessageDigest md = MessageDigest.getInstance("SHA-512");
		//执行消息摘要
		return md.digest(data);
	}
	
	public String encodeSHA_codec(byte[] data) throws Exception {
		return DigestUtils.shaHex(data);
	}
	
	public byte[] encodeSHA224_bc(byte[] data) throws Exception {
		//加入BouncyCastleProvider支持
		Security.addProvider(new BouncyCastleProvider());
		
		//初始化MessageDigest
		MessageDigest md = MessageDigest.getInstance("SHA-224");
		//执行消息摘要
		return md.digest(data);
	}

}

你可能感兴趣的:(MD5,消息摘要,md2,md4,sha-1,sha-224)