java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java文件内容转换为MD5哈希值

Java如何将文件内容转换为MD5哈希值

作者:CnLg.NJ

这篇文章主要介绍了Java如何将文件内容转换为MD5哈希值的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java文件内容转换为MD5哈希值

若要把读取到的 files 列表里的内容转换为 MD5 哈希值,你可以逐个遍历 files 列表中的元素,将每个元素的内容计算成 MD5 哈希值。

一个完整的Java示例代码

展示了如何实现这一功能:

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;

class CheckHelper {
    public static String getOcetString(byte[] buffer, int bytesRead) {
        return new String(buffer, 0, bytesRead);
    }
}

public class FilesToMD5 {
    public static String calculateMD5(String input) {
        try {
            // 获取 MD5 消息摘要实例
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算输入字符串的 MD5 哈希值
            byte[] digest = md.digest(input.getBytes());
            StringBuilder hexString = new StringBuilder();
            for (byte b : digest) {
                String hex = Integer.toHexString(0xFF & b);
                if (hex.length() == 1) {
                    hexString.append('0');
                }
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            // 若 MD5 算法不可用,抛出运行时异常
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        String path = "path/to/your/file.txt";
        int blockSize = 1024;
        long fileLength = 0;
        List<String> files = new ArrayList<>();

        try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path))) {
            byte[] buffer = new byte[blockSize];
            int bytesRead;
            while ((bytesRead = bis.read(buffer)) != -1) {
                fileLength += bytesRead;
                files.add(CheckHelper.getOcetString(buffer, bytesRead));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 遍历 files 列表,计算每个元素的 MD5 哈希值
        for (String content : files) {
            String md5 = calculateMD5(content);
            System.out.println("内容: " + content);
            System.out.println("MD5 哈希值: " + md5);
        }
    }
}    

代码解释

calculateMD5 方法

main 方法

注意事项

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文