杰瑞科技汇

Java如何实现MD5字符串加密?

在 Java 中,可以使用 java.security.MessageDigest 类来实现 MD5 加密字符串,以下是完整的代码示例:

Java如何实现MD5字符串加密?-图1
(图片来源网络,侵删)

方法 1:使用 MessageDigest 类(标准 Java API)

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
    public static String getMd5(String input) {
        try {
            // 获取 MD5 摘要算法实例
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算摘要(返回字节数组)
            byte[] messageDigest = md.digest(input.getBytes());
            // 将字节数组转换为十六进制字符串
            BigInteger number = new BigInteger(1, messageDigest);
            StringBuilder hexString = new StringBuilder(number.toString(16));
            // 补前导零,确保长度为 32
            while (hexString.length() < 32) {
                hexString.insert(0, '0');
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("MD5 算法不可用", e);
        }
    }
    public static void main(String[] args) {
        String originalString = "Hello, World!";
        String md5Hash = getMd5(originalString);
        System.out.println("原始字符串: " + originalString);
        System.out.println("MD5 哈希值: " + md5Hash); // 输出: ed076287532e86365e841e92bfc50d8c
    }
}

方法 2:使用 Apache Commons Codec(推荐,更简洁)

如果项目中已引入 Apache Commons Codec 库,可以直接使用 DigestUtils 类:

依赖(Maven):

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>

代码:

import org.apache.commons.codec.digest.DigestUtils;
public class MD5Utils {
    public static String getMd5(String input) {
        return DigestUtils.md5Hex(input);
    }
    public static void main(String[] args) {
        String originalString = "Hello, World!";
        String md5Hash = getMd5(originalString);
        System.out.println("原始字符串: " + originalString);
        System.out.println("MD5 哈希值: " + md5Hash); // 输出: ed076287532e86365e841e92bfc50d8c
    }
}

关键点说明:

  1. MD5 特性

    • 固定长度输出(32 位十六进制字符串)。
    • 不可逆(单向哈希算法)。
    • 可能存在哈希碰撞(不推荐用于安全敏感场景)。
  2. 编码问题

    确保输入字符串的编码一致(通常使用 UTF-8)。

    Java如何实现MD5字符串加密?-图2
    (图片来源网络,侵删)
  3. 性能优化

    • 如果需要多次计算 MD5,可以复用 MessageDigest 实例。
  4. 替代方案

    对于安全敏感场景,建议使用更安全的算法(如 SHA-256)。

示例输出:

原始字符串: Hello, World!
MD5 哈希值: ed076287532e86365e841e92bfc50d8c

选择哪种方式取决于项目需求,如果不想引入额外依赖,使用标准 Java API 即可;否则,Apache Commons Codec 的代码更简洁。

Java如何实现MD5字符串加密?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇