计算MD5值的Utility类

在实际项目中有些时候会出现需要计算指定字符串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对象即可。

猜你喜欢

转载自my.oschina.net/u/237688/blog/1797348