如何获取文件的MD5码
最近在写个基于Flask框架的上传文件功能,其中涉及到去到DB校验文件是否已经存在的功能要用到MD5码 顺手来和大家分享下
目录
使用命令行工具
Linux/macOS:
Windows:
使用编程语言
Python:
Java:
使用命令行工具
Linux/macOS:
- 使用
md5
或md5sum
命令md5 文件路径md5sum 文件路径
Windows:
- 使用
CertUtil
命令:CertUtil -hashfile 文件路径 MD5
使用编程语言
Python:
- 可以使用
hashlib
模块来计算 MD5:
import hashlibdef 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之前文件是完整的,这样计算出的哈希值才有意义