首页 > 代码库 > java md5 sha 加密 的使用方法 工具类 MessageDigest

java md5 sha 加密 的使用方法 工具类 MessageDigest

package test;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 加密工具类
 * @author gxd
 *
 */
public class EncriptUtil {

	public static void main(String[] args) {
		String str = "我爱你23" ;
		System.out.println(EncriptUtil.getMd5("MD5",str));
	}
	
	public static String getMd5(String type , String str){
		String md5str = null ;
		try {
			//获取报文摘要算法即散列算法  传入的字符串不区分大小写  调用 getInstance 将返回已初始化过的MessageDigest对象。因此,它不需要进一步的初始化。 
//			注意:这里不是单例模式产生的对象  两次拿到的对象实例是不同的   !==
//			SUN提供的常用的算法名称有:MD2  MD5  SHA-1  SHA-256   SHA-384 SHA-512 
			MessageDigest md = MessageDigest.getInstance(type);
			
//			通过调用 update 方法向MessageDigest对象提传送要计算的数据  默认采用当前系统编码  gbk  采用不同编码结果是不同的
			md.update(str.getBytes());
//			md.update(str.getBytes("UTF8"));
			
//			调用 digest(摘要)方法来计算消息摘要(即生成散列码)
			byte[] digest = md.digest();
//			System.out.println(Arrays.toString(digest));
			
			//对计算生成的md5使用 sun.misc.BASE64Encoder进行简单的加密。
//			BASE64Encoder be = new BASE64Encoder();
//			md5str = be.encode(digest);
//			System.out.println(md5str);
			
			//对生成的md5深度处理
			StringBuffer sb = new StringBuffer();
			  for (int i = 0; i < digest.length; i++) {
			   sb.append(Integer.toHexString(0xff & digest[i]));
			  }
			  md5str = sb.toString();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
			throw new RuntimeException("指定加密方式不存在");
		}
//		System.out.println(md5str.length());
		return md5str;
	}
}

java md5 sha 加密 的使用方法 工具类 MessageDigest