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