当前位置: 首页 > news >正文

如何获取文件的MD5码

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

目录

使用命令行工具

Linux/macOS:

Windows:

使用编程语言

Python:

Java:


使用命令行工具
Linux/macOS:
  • 使用 md5md5sum 命令
    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之前文件是完整的,这样计算出的哈希值才有意义

http://www.dtcms.com/a/354629.html

相关文章:

  • 读大语言模型09超级智能
  • 完整代码注释:实现 Qt 的 TCP 客户端,实现和服务器通信
  • 从集线器到路由器:计算机网络演进之路
  • 实现微信小程序的UniApp相机组件:拍照、录像与双指缩放
  • 在Xcode中查看设备日志的完整指南
  • 深度学习篇---VGGNet
  • 【SQL】计算一年内每个月份的周数据
  • 基于大型语言模型的自然语言到 SQL 转换研究综述:我们身处何处,又将前往何方?
  • MyBatis 动态 SQL 精讲:告别硬编码的智能拼接艺术
  • 【Depth与RGB对齐算法(D2C)】
  • PPT处理控件Aspose.Slides教程:在 C# 中将 PPTX 转换为 Markdown
  • 项目一系列-第7章 父子组件通信
  • vue3使用axios向spring boot 发送请求,请求响应时间快慢交替问题分析
  • 探索 Vertex AI 与 Elasticsearch
  • Ubuntu 从零到一搭建 Appium+Python 自动化环境(含下厨房真机实战)—2025 版
  • 导出wireshark的FLV RAW数据并进行分析
  • 第13集 当您的USB设备不在已实测支持列表,如何让TOS-WLink支持您的USB设备--答案Wireshark USB抓包
  • [数据结构] ArrayList与顺序表(下)
  • indexDB快速上手
  • 2015考研数学(二)真题
  • 让模糊物体变清晰的视频AI:快速提升画质指南
  • 51c大模型~合集175
  • pcl_案例2 叶片与根茎的分离
  • Redis发布订阅:实时消息系统的极简解决方案
  • MyBatis延迟加载
  • 云计算学习100天-第29天
  • Node.js 的模块化规范是什么?CommonJS 和 ES6 模块有什么区别?
  • Python DELL Logo
  • day1 ———C++———变量和字符串的使用
  • AI驱动企业数字化转型:解码未来三年的智能化变革密码