📜  如何在Java中为文件生成 MD5 校验和?(1)

📅  最后修改于: 2023-12-03 14:52:44.853000             🧑  作者: Mango

如何在Java中为文件生成 MD5 校验和?

简介

MD5 (Message-Digest Algorithm 5) 是常用的一种哈希函数,用于将任意长度的消息压缩为一个128位的消息摘要。在Java中,可以使用java.security.MessageDigest类来生成MD5校验和。

实现步骤
  1. 创建一个MessageDigest实例,并指定使用MD5算法

    MessageDigest md = MessageDigest.getInstance("MD5");
    
  2. 读取文件内容,更新MessageDigest实例

    FileInputStream fileInputStream = new FileInputStream(file);
    byte[] buffer = new byte[1024];
    int length;
    while ((length = fileInputStream.read(buffer)) != -1) {
        md.update(buffer, 0, length);
    }
    
  3. 获取生成的MD5校验和

    byte[] digest = md.digest();
    

    注意:MessageDigest对象只能计算一次摘要。

完整代码示例:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {

    public static String getFileMD5(File file) throws NoSuchAlgorithmException, IOException {
        MessageDigest md = MessageDigest.getInstance("MD5");

        FileInputStream fileInputStream = new FileInputStream(file);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = fileInputStream.read(buffer)) != -1) {
            md.update(buffer, 0, length);
        }
        fileInputStream.close();

        byte[] digest = md.digest();

        // 转化为16进制字符串
        StringBuilder sb = new StringBuilder();
        for (byte b : digest) {
            String hex = Integer.toHexString(b & 0xff);
            if (hex.length() == 1) {
                sb.append("0");
            }
            sb.append(hex);
        }
        return sb.toString();
    }
}
总结

在Java中生成MD5校验和其实很简单,只需要使用MessageDigest类即可。生成MD5校验和的主要用途是用来校验文件的完整性,可以用于防止文件被篡改或传输过程中出现误差。