java md5工具类分享


在Java中,MD5是一种广泛使用的哈希算法,用于生成数据的128位(16字节)散列值(通常表示为32位十六进制数)。以下是一个简单的MD5工具类实现,用于计算字符串的MD5哈希值:


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Utils {

    /**
     * 计算字符串的MD5值
     * 
     * @param input 待计算的字符串
     * @return 字符串的MD5值
     */
    public static String getMD5(String input) {
        try {
            // 创建一个MD5 MessageDigest 实例
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算input字符串的MD5函数
            md.update(input.getBytes());
            // digest()最后确定返回md5 hash值,返回值为8位字节(8*8=64位),通常转化为16进制
            byte[] messageDigest = md.digest();

            // 创建字节数组到十六进制字符串的转换
            StringBuilder hexString = new StringBuilder();
            for (byte b : messageDigest) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) hexString.append('0');
                hexString.append(hex);
            }

            // 返回32位十六进制字符串
            return hexString.toString();

        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

    // 测试代码
    public static void main(String[] args) {
        String testString = "hello world";
        System.out.println(testString + " 的MD5值是:" + getMD5(testString));
    }
}

这个工具类`MD5Utils`包含一个静态方法`getMD5`,它接收一个字符串作为输入,并返回该字符串的MD5哈希值(作为十六进制字符串)。在`main`方法中提供了一个测试示例,展示了如何使用这个工具类。

注意:MD5算法由于其脆弱性,在需要高安全性的应用中已不再推荐使用。对于安全敏感的应用,请考虑使用更安全的哈希算法,如SHA-256。