将MD5数组转换为String java

我知道有很多类似的主题,但仍然……有人能为我提供生成MD5字符串的方法的工作示例。
我正在使用MessageDigest,我正在执行以下操作来获取字符串

sun.misc.BASE64Encoder().encode(messageDigest.digest()) 

我想有更好的方法可以做到这一点。
提前致谢!

 MessageDigest md = MessageDigest.getInstance("MD5"); byte[] arr = md.digest(bytesOfMessage); return Base64.getEncoder().encodeToString(arr); 

注意:md5不再被认为是好的哈希算法,考虑选择SHA

我会使用commons-codec

  • Base64 – Base64.encodeBase64(digestBytes)
  • hex字符串 – Hex.encodeHex(digestBytes)
 // Convert to hex string StringBuffer sb = new StringBuffer(); for (int i = 0; i < messageDigest.length; i++) { if ((0xff & messageDigest[i]) < 0x10) { sb.append('0'); } sb.append(Integer.toHexString(0xff & messageDigest[i])); } String md5 = sb.toString(); 

这假设您实际上希望将MD5打印为hex字符串,而不是BASE64编码。 这就是它通常表现的方式。

我见过下一个解决方案:

  byte[] digest = md.digest(someDataByteArray); StringBuilder hex = new StringBuilder(); for (byte b : digest) { hex.append(String.format("%02x", b)); }