常用的有兩種實現方式
一種是用 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()));
這兩種實現最終都是使用了 java.security.MessageDigest
類,這個類會在內部進行一些狀態維護,所以不是線程安全的,在多線程環境下使用需要注意共享問題。