计算MD5值的Utility类

本文介绍了如何使用Java计算指定字符串的MD5值,并提供了几种不同的实现方式,包括使用`java.security.MessageDigest`类、`commons-codec`库及Spring框架提供的`DigestUtils`类。
摘要由CSDN通过智能技术生成

在实际项目中有些时候会出现需要计算指定字符串MD5值的情况,通常情况下采取这样的做法

import java.security.MessageDigest;

...................

String originalMessage = xxxxxxx;

MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(originalMessage.getBytes(Charset.forName("UTF8")));
byte[] resultByte = messageDigest.digest();

但是用这种方法得到的MD5值是byte数组形式,在进行MD5值比较时,更多的是使用MD5值字符串形式比较,我们可以自己写方法把它转换为Hex形式的字符串,也可以使用commons-codec库的Hex类

import org.apache.commons.codec.binary.Hex;


String md5Str = new String(Hex.encodeHex(resultByte));

这样就把生成的MD5值转换成了MD5字符串。

commons-codec库还提供了一个DigestUtils类,直接计算字符串的MD5值字符串,使用这个类,我们可以用以下方法计算字符串的MD5值字符串

import org.apache.commons.codec.digest.DigestUtils;


String originalMessage = xxxxxxx;

String md5Str = DigestUtils.md5Hex(originalMessage.getBytes(Charset.forName("UTF-8"));

Spring-Core库里也同样提供了一个DigestUtils类,可以用于计算MD5值字符串,方法如下

import org.springframework.util.DigestUtils;

String originalMessage = xxxxxxx;


String md5Str = DigestUtils.md5DigestAsHex(originalMessage.getBytes(Charset.forName("UTF-8")));

这两个类还可以计算InputStream的MD5值,只需要将方法参数的byte数组换为InputStream对象即可。

转载于:https://my.oschina.net/u/237688/blog/1797348

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值