常用的有兩種實(shí)現(xiàn)方式
一種是用 java 自帶的 java.security.MessageDigest
睹晒,示例如下
byte[] data = "abc".getBytes();
MessageDigest md5digest = MessageDigest.getInstance("md5");
byte[] md5bytes = md5digest.digest(data);
另一種是用 apache commons-codec 包沟绪,示例如下
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
String md5str = Hex.encodeHexString(DigestUtils.getMd5Digest().digest("1".getBytes()));
這兩種實(shí)現(xiàn)最終都是使用了 java.security.MessageDigest
類,這個(gè)類會(huì)在內(nèi)部進(jìn)行一些狀態(tài)維護(hù),所以不是線程安全的丽旅,在多線程環(huán)境下使用需要注意共享問題染服。