文中代码用到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);
}
}