计算MD5值的Utility类

在实际项目中有些时候会出现须要计算指定字符串MD5值的状况,一般状况下采起这样的作法java

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类spring

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


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

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

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值字符串,方法以下code

import org.springframework.util.DigestUtils;

String originalMessage = xxxxxxx;


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

这两个类还能够计算InputStream的MD5值,只须要将方法参数的byte数组换为InputStream对象便可。对象

相关文章
相关标签/搜索