JAVA实现字符串MD5加密

2012-03-03 23:11:20|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:Java, 加密/解密|来源:唯设编程网

MD5即Message-Digest Algorithm 5(信息-摘要算法5),是一种用于产生数字签名的单项散列算法,在1991年由MIT Laboratory for Computer Science(IT计算机科学实验室)和RSA Data Security Inc(RSA数据安全公司)的Ronald L. Rivest教授开发出来,经由MD2、MD3和MD4发展而来。MD5算法的使用不需要支付任何版权费用。它的作用是让大容量信息在用数字签名软件签私人密匙前被"压缩"成一种保密的格式(将一个任意长度的“字节串”通过一个不可逆的字符串变换算法变换成一个128bit的大整数,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。)
   
   在 Java 中,java.security.MessageDigest 中已经定义了 MD5 的计算,所以我们只需要简单地调用即可得到 MD5 的128 位整数。然后将此 128 位计 16 个字节转换成 16 进制表示即可。
示例:

package FamilyAsset.Utility.Security;

import java.security.MessageDigest;

/**
* 实现MD5加密算法
*/
public class MD5 {
	private final static String[] hexDigits = { // 用来将字节转换成 16 进制表示的字符
			"0", "1", "2", "3", "4", "5", "6", "7",
			"8", "9", "a", "b", "c", "d", "e", "f" };
	/**
	 * MD5加密算法的具体实现
	 * @param src 需要加密的字符串
	 * @return 加密后的结果字符串,32位
	 */
	public static String getMD5(String src) {
		String result=null;
		try{
			result=new String(src);
			MessageDigest md5=MessageDigest.getInstance("MD5");
			result=byteArrayToHexString(md5.digest(result.getBytes()));
		}catch(Exception err){
			err.printStackTrace();
		}
		return result.toUpperCase();
	}
	private static String byteArrayToHexString(byte[] digest) {
		StringBuffer result=new StringBuffer();
		for(int i=0;i<digest.length;i++)
			result.append(byteToHexString(digest[i]));
		return result.toString();
	}
	private static String byteToHexString(byte b) {
		int n=b;
		if(n<0)
			n=256+n;
		int d1=n/16;
		int d2=n%16;
		return hexDigits[d1]+hexDigits[d2];
	}
}
发表评论0条 】
网友评论(共?条评论)..
JAVA实现字符串MD5加密