java 采用MD5将字符串加密

本文详细介绍如何使用Java的MessageDigest类实现MD5加密算法,包括创建MD5实例、将字符串转换为字节流、调用digest方法加密及转换为16进制字符串的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;i<bytes.length;i++) {
			num = bytes[i]>0?bytes[i]:255+bytes[i];
			String hex = Integer.toHexString(num);
			res.append(hex.length()<2?0+hex:hex);
		}
		return res.toString();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值