java 采用MD5将字符串加密

MD5加密算法不需要自己去实现,java提供了java.security.MessageDigest类。

关于MessageDigest类  --待补充

官方文档地址:https://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html

MessageDigest类主要提供信息摘要算法功能,如常见的MD5、SHA-1和SHA-256等,信息摘要单向的散列函数,只能够进行加密,不能解密,因此在使用的时候一般是直接将目标对象采用md5加密后直接与数据库对比。

1.创建MessageDigest实例

修饰符和类型 方法名称和描述
static MessageDigest

getInstance(String algorithm)

返回指定摘要算法的MessageDigest对象

algorithm表示的是摘要算法名称,主要有MD2、MD5、SHA-1 、SHA-224 、SHA-256 、SHA-384 、SHA-512

//创建MD5摘要算法
MessageDigest md5 = MessageDigest.getInstance("MD5");

实现过程

主要分三个部分:

1.将字符串转换为字节流,

2.调用digest()方法对指定字节流进行加密

3.将加密后的字节流转换为16进制格式的字符串,(可根据自己需要选择转换成对应格式字符串)

代码如下:

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class EncodeUtil {
	/**
	 * 将字符串以md5加密
	 * @param str
	 * @return 32位字符串
	 */
	public static String encodeByMD5(String str) {
		byte[] bytes = null;
		try {
			MessageDigest md5 = MessageDigest.getInstance("MD5");
//			System.out.println(md5.getDigestLength());   //16
			bytes =  md5.digest(str.getBytes("utf-8"));
		} catch (NoSuchAlgorithmException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			LogHelper.logError(e); //log4j日志输出,可注释
		} catch (UnsupportedEncodingException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		return bytesTo16BString(bytes);
	}
	
	private static String bytesTo16BString(byte[] bytes) {
		StringBuffer res = new StringBuffer();
		int num = 0;
		for(int i=0;i0?bytes[i]:255+bytes[i];
			String hex = Integer.toHexString(num);
			res.append(hex.length()<2?0+hex:hex);
		}
		return res.toString();
	}
}

 

你可能感兴趣的:(java)