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

Linux 常用命令 -md5sum【计算和校验文件的MD5哈希值】

简介

md5sum 源于 “MD5 message-digest algorithm”,即 MD5 消息摘要算法。这个命令用于计算和校验文件的 MD5 哈希值。MD5 是一种被广泛使用的密码学哈希函数,它将任意长度的数据映射为固定长度(128位)的哈希值,通常以32位十六进制数表示。md5sum 命令通过读取文件内容,使用 MD5 算法生成该文件的唯一“指纹”(哈希值)。这个指纹可以用于验证文件在传输或存储过程中是否发生更改。

使用方式

md5sum [OPTION]... [FILE]...

常用选项

  • -b, --binary:以二进制模式读取文件。
  • -c, --check:从指定文件中读取 MD5 校验和并进行校验。
  • --tag:创建 BSD 风格的检验和。
  • -t, --text:以文本模式读取文件(默认选项)。
  • -z, --zero:每行输出结果以空字符 NUL 结尾,而不是换行符,并且禁用文件名转义。
  • --help:显示帮助信息并退出。
  • --version:显示帮助信息并退出。

以下五个选项仅在校验校验和时有用:

  • --ignore-missing:忽略缺失的文件,不报错或报告状态。
  • --quiet:不打印成功校验文件的 “OK” 信息。
  • --status:不输出任何内容,仅通过退出状态码来表示成功与否。
  • --strict:如果校验和行的格式不正确,则以非零状态码退出。
  • -w, --warn:对校验和行格式不正确的情况输出警告信息。

参考示例

计算单个文件的 MD5 值

md5sum 文件名

使用 md5sum 加文件名可以直接输出该文件的 MD5 值:

jay@jay-home:~/test$ md5sum test.c
7d7f9c1dc810781d1f0fcc6681122233  test.c

计算多个文件的 MD5 值

md5sum 文件1 文件2 文件3...

使用 md5sum 加多个文件名可以输出多个文件的 MD5 值:

jay@jay-home:~/test$ md5sum test.c test.txt hello.txt 
7d7f9c1dc810781d1f0fcc6681122233  test.c
d41d8cd98f00b204e9800998ecf8427e  test.txt
6f5902ac237024bdd0c176cb93063dc4  hello.txt

将计算的 MD5 值保存到文件中

md5sum 文件1 文件2 > 文件.md5

使用重定向符 >md5sum 的输出结果保存到指定文件中:

jay@jay-home:~/test$ md5sum test.c test.txt hello.txt > checksum.txt
jay@jay-home:~/test$ 

校验文件 MD5 值

md5sum -c 文件.md5

使用 -c 选项对指定文件中的校验和进行检验并输出检验结果:

jay@jay-home:~/test$ md5sum -c checksum.txt 
test.c: OK
test.txt: OK
hello.txt: OK

注意事项

  • 当不提供 FILEFILE- 时,从标准输入中读取数据。

  • 校验和的计算方法遵循 RFC 1321 的描述。进行校验时,输入内容应该是该程序之前的输出结果。默认模式是为每个文件打印一行,包含校验和、一个空格、一个指示输入模式的字符(二进制模式为 *,文本模式或二进制模式不重要时为空格),以及文件名。在 GNU 系统上,二进制模式和文本模式没有区别。

  • MD5 算法存在安全漏洞,如容易受到括碰撞攻击、字典攻击等攻击方式,因此不适合用于对安全性要求高的场景。

http://www.xdnf.cn/news/9550.html

相关文章:

  • web第七次课后作业--springbootWeb响应
  • 【C++基础知识】【ASAN】
  • 【207】VS2022 C++对unsigned char某一位(bit)的数据进行读写
  • dify本地部署的怎么更新新版本
  • matlab实现图像压缩编码
  • 4.8.3 利用SparkSQL统计每日新增用户
  • 微信小程序返回上一页监听
  • PG技术分享
  • 数据结构之队列实验
  • Nacos 服务注册发现案例:nacos-spring-cloud-example 详解
  • world quant教程学习二
  • 基于亚博K210开发板——物体分类测试
  • 【设计模式】责任链
  • PostgreSQL 内置扩展列表
  • HTML应用指南:利用GET请求获取全国罗森门店位置信息
  • 8000字回顾所有的HTML标签~
  • BSS / OSS 是什么
  • DBus总线详解
  • 华为OD机试真题——数字加减游戏(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • uni-app 提供的页面跳转方法详细解释及其区别
  • 麒麟v10,arm64架构,编译安装Qt5.12.8
  • IEEE PRMVAI 2025 WS 26:计算机视觉前沿 Workshop 来袭!
  • 第十一章 管理Linux软件包和进程
  • 阅读笔记——理解什么是LLM大语言模型
  • 解决 NestJS 中热重载与实体类自动导入不能兼容的问题
  • 使用nvm use切换版本号,报exit status 5
  • spring4第3课-ioc控制反转-详解依赖注入的4种方式
  • 独立站引流新策略:AB站投放法助力突破瓶颈
  • JavaScript 中,require 和 import
  • zabbix6.x 监控mysql数据库