常用的有两种实现方式
一种是用 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
类,这个类会在内部进行一些状态维护,所以不是线程安全的,在多线程环境下使用需要注意共享问题。