如何获取文件的MD5码

发布于:2025-08-30 ⋅ 阅读:(20) ⋅ 点赞:(0)

最近在写个基于Flask框架的上传文件功能,其中涉及到去到DB校验文件是否已经存在的功能要用到MD5码 顺手来和大家分享下

目录

使用命令行工具

Linux/macOS:

Windows:

使用编程语言

Python:

Java:


使用命令行工具
Linux/macOS:
  • 使用 md5md5sum 命令
    md5 文件路径
    
    md5sum 文件路径
Windows:
  • 使用 CertUtil 命令:
    CertUtil -hashfile 文件路径 MD5
使用编程语言
Python:
  • 可以使用 hashlib 模块来计算 MD5:
import hashlib

def calculate_md5(file_path):
    # 创建一个MD5哈希对象
    md5_hash = hashlib.md5()
    # 以二进制模式打开文件
    with open(file_path, "rb") as f:
        # 逐块读取文件并更新
        for chunk in iter(lambda: f.read(4096), b""):
            md5_hash.update(chunk)
    # 返回16进制格式的哈希值
    return md5_hash.hexdigest()

# 使用示例
file_path = 'your_file.txt' # 替换为你的文件路径
md5_value = calculate_md5(file_path)
print(f"文件的MD5值是: {md5_value}")

# 输出示例:文件的MD5值是: d41d8cd98f00b204e9800998ecf8427e
Java:
  • 使用 java.security.MessageDigest 类:
import java.io.*;
import java.security.*;

public class MD5Checksum {
    public static void main(String[] args) throws Exception {
        FileInputStream fis = new FileInputStream("你的文件路径");
        byte[] buffer = new byte[1024];
        MessageDigest md5 = MessageDigest.getInstance("MD5");

        int numRead;
        do {
            numRead = fis.read(buffer);
            if (numRead > 0) {
                md5.update(buffer, 0, numRead);
            }
        } while (numRead != -1);

        fis.close();

        byte[] digest = md5.digest();

        StringBuffer sb = new StringBuffer();
        for (byte b : digest) {
            sb.append(String.format("%02x", b));
        }

        System.out.println("MD5: " + sb.toString());
    }
}

这些方法可以较为容易地计算文件的MD5值,但要确保在计算MD5之前文件是完整的,这样计算出的哈希值才有意义