計算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對象便可。對象

相關文章
相關標籤/搜索