在實際項目中有些時候會出現須要計算指定字符串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對象便可。對象