java中MD5算法使用

本文介绍如何使用Java标准库中的MessageDigest类实现MD5加密。通过具体代码示例展示了将任意长度的字符串转换为固定长度的MD5哈希值的过程。此方法广泛应用于密码加密、文件校验等领域。

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

java标准库中的java.security包下的MessageDigest类提供了消息摘要算法的基本实现,包括SHA-1,SHA-256,MD5等算法。消息摘要算法是一种安全的哈希算法,将任意长度的数据哈希映射成一定长度的哈希值。

package egg.util;
import java.security.MessageDigest;
public class StringUtils {
	public static String getMD5(String pwd) {
		//将字符串转换为字节数组
		byte[] toChapter = pwd.getBytes();  
		//md5str用来保存字节数组转换成的十六进制数
		StringBuffer md5str = new StringBuffer();
		try{
			//得到一个实现特定摘要算法的消息摘要对象
			MessageDigest md5 = MessageDigest.getInstance( "MD5" );
	        //将字节数组toChapter添加到待计算MD5值的字节序列中
			md5.update(toChapter);  
			//计算字节序列的MD5值,返回16个字节的字节数组,保存到toChapterDigest
	        byte[] toChapterDigest = md5.digest();
	        
	        //每个8位的二进制字节用十六进制表示的话,需要两个字符,每个十六进制字符对应四位二进制位
	        //故16个字节(128bit)转换后,变为了32个字符的字符串,将它们添加到md5str中
	        
	        int digital;
			for (int i = 0; i <toChapterDigest.length; i++) {
				digital =toChapterDigest[i];
				//这里字节类型赋值给int类型,会按符号位扩展的
				//如果字节的最高位是1,扩展为int时它的高位(9-32位)都会变为1
				if(digital < 0) {
					//将8位字节之前的高位全变为0
					digital += 256;
				}
				if(digital < 16){
					md5str.append("0");
				}
				//经过判断之后的操作,能保证digtal转换为十六进制字符的时候只得到两位
				md5str.append(Integer.toHexString(digital));
			}
		}catch( Exception e ) {     
	           e.printStackTrace(); 
	    }
		//返回十六进制字符串
		return md5str.toString();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值