import java.security.MessageDigest;
import java.security.Security;
import org.apache.commons.codec.digest.DigestUtils;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.MD2Digest;
import org.bouncycastle.crypto.digests.MD4Digest;
import org.bouncycastle.crypto.digests.MD5Digest;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Hex;
public class MDDemo
{
public static void main(String[] args) throws Exception
{
System.out.println(jdkMD5("测试 test!"));
System.out.println(jdkMD2("测试 test!"));
System.out.println(jdkMD4("测试 test!"));
System.out.println(bcMD4("测试 test!"));
System.out.println(bcMD5("测试 test!"));
System.out.println(bcMD2("测试 test!"));
System.out.println(ccMD5("测试 test!"));
System.out.println(ccMD2("测试 test!"));
}
public static String jdkMD5(String srcString) throws Exception
{
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] encodeStr = md.digest(srcString.getBytes());
return Hex.toHexString(encodeStr);
}
public static String jdkMD2(String srcString) throws Exception
{
MessageDigest md = MessageDigest.getInstance("MD2");
byte[] encodeStr = md.digest(srcString.getBytes());
return Hex.toHexString(encodeStr);
}
public static String jdkMD4(String srcString) throws Exception
{
Security.addProvider(new BouncyCastleProvider());
MessageDigest md = MessageDigest.getInstance("MD4");
byte[] encodeStr = md.digest(srcString.getBytes());
return Hex.toHexString(encodeStr);
}
public static String bcMD4(String srcString) throws Exception
{
Digest digest = new MD4Digest();
digest.update(srcString.getBytes(),0,srcString.getBytes().length);
byte[] md4Bytes = new byte[digest.getDigestSize()];
digest.doFinal(md4Bytes, 0);
return Hex.toHexString(md4Bytes);
}
public static String bcMD5(String srcString) throws Exception
{
Digest digest = new MD5Digest();
digest.update(srcString.getBytes(),0,srcString.getBytes().length);
byte[] md5Bytes = new byte[digest.getDigestSize()];
digest.doFinal(md5Bytes, 0);
return Hex.toHexString(md5Bytes);
}
public static String bcMD2(String srcString) throws Exception
{
Digest digest = new MD2Digest();
digest.update(srcString.getBytes(),0,srcString.getBytes().length);
byte[] md2Bytes = new byte[digest.getDigestSize()];
digest.doFinal(md2Bytes, 0);
return Hex.toHexString(md2Bytes);
}
public static String ccMD5(String srcString) throws Exception
{
return DigestUtils.md5Hex(srcString);
}
public static String ccMD2(String srcString) throws Exception
{
return DigestUtils.md2Hex(srcString);
}
}