CSDN GitHub
Linux下使用md5sum计算和检验MD5码 AderXCoding/system/md5sum

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处

1 md5介绍


在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况. 这种情况在网络这种相对更不稳定的环境中,容易出现. 那么校验文件的完整性,也是势在必行的

2 md5sum命令


md5sum命令用于生成和校验文件的md5值. 它会逐位对文件的内容进行校验. 是文件的内容, 与文件名无关, 也就是文件内容相同, 其md5值相同. md5值是一个128位的二进制数据, 转换成16进制则是32(128/4)位的进制值.

md5校验, 有很小的概率不同的文件生成的md5可能相同.比md5更安全的校验算法还有SHA*系列的.

在网络传输时,我们校验源文件获得其md5sum,传输完毕后,校验其目标文件,并对比如果源文件和目标文件md5 一致的话,则表示文件传输无异常。否则说明文件在传输过程中未正确传输。

用法:md5sum [选项]... [文件]...
显示或检查 MD5(128-bit) 校验和。
若没有文件选项,或者文件处为"-",则从标准输入读取。-b, --binary 以二进制模式读取
-c, --check 从文件中读取MD5 的校验值并予以检查
-t, --text 以纯文本模式读取(默认)以下三个选项在进行校验时非常有用:--quiet 不为校验成功的文件输出OK
--status 不输出任何内容,使用退出状态号显示成功
-w, --warn 对格式不准确的校验和行进行警告
--strict with --check, exit non-zero for any invalid input
--help 显示此帮助信息并退出
--version 显示版本信息并退出校验和会按照RFC 1321 规范生成. 当进行检查时, 给出的输入格式应该和程序的输出样板格式相同. 默认的输出模式时输出一行校验和的校验结果, 并有一个字符来表示文件类型("*"代表二进制, " "代表纯文本), 并同时显示每个文件的名称.

可以使用md5sum --help查看其帮助信息

3 示例


  • 获取字符串的MD5值 :

字符串”hello”的MD5:

echo -n 'hello' | md5sum | cut -d ' ' -f1

得到的MD5值

5d41402abc4b2a76b9719d911017c592
命令解释 描述
md5sum 显示或检查 MD5(128-bit) 校验和, 若没有文件选项,或者文件处为”-“,则从标准输入读取
echo -n 输出信息, 但是不打印换行符
cut cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件, -d指定与空格和tab键不同的域分隔符. -f1表示第一个域
  • 获取文件的MD5值:

我们使用了从download.qt.io下载的qt-4.8.6的源码包, 可以使用下面的命令卸载

wget http://download.qt.io/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz

检验文件qt-everywhere-opensource-src-4.8.6.tar.gzMD5

md5sum qt-everywhere-opensource-src-4.8.6.tar.gz | cut -d ' ' -f1

得到的MD5值:

ee3d6e2ca498bc7685b7f17cdb5f2eea
  • 使用MD5校验iso文件

进行md5的校对我们需要首先知道文件的md5值, 一般来说文件的下载地址会为我们提供检验用的md5文件, 一般来说这些文件是用如下的命令生成的

md5sum qt-everywhere-opensource-src-4.8.6.tar.gz >qt-everywhere-opensource-src-4.8.6.tar.gz.md5

注意qt-everywhere-opensource-src-4.8.6.tar.gz.md5的内容是:

2edbe4d6c2eff33ef91732602f3518eb  qt-everywhere-opensource-src-4.8.6.tar.gz

把qt-everywhere-opensource-src-4.8.6.tar.gz和其验证文件qt-everywhere-opensource-src-4.8.6.tar.gz.md5放到同一目录下, 然后使用用下面的命令进行检验

md5sum -c qt-everywhere-opensource-src-4.8.6.tar.gz.md5

当然我们下载的文件, 用md5进行检验是检查下载文件的完整性, 自然不能用自己生成的md5校验文件, 一般来说文件的下载网站会为我们提供检验用的md5文件.

qt-everywhere-opensource-src-4.8.6.tar.gzmd5文件校验文件可以从http://download.qt.io/archive/qt/4.8/4.8.6/md5sums-4.8.6来下载

wget http://download.qt.io/archive/qt/4.8/4.8.6/md5sums-4.8.6

md5sums-4.8.6内容如下

2edbe4d6c2eff33ef91732602f3518eb  qt-everywhere-opensource-src-4.8.6.tar.gz
61f7d0ebe900ed3fb64036cfdca55975  qt-everywhere-opensource-src-4.8.6.zip
7b9ab1be155c87e9f9dfa9e304ee1abf  qt-opensource-mac-4.8.6-debug-libs.dmg
9954001dcd8f6446be2b418775140e3c  qt-opensource-mac-4.8.6.dmg
5cd26ef7398a000b7de15712a1dcfe4e  qt-opensource-windows-x86-mingw482-4.8.6.exe
8d6f489c8550792314f617ae80daa7e4  qt-opensource-windows-x86-vs2008-4.8.6.exe
4c6e66fab7cb4d0728248c9c1ee630c5  qt-opensource-windows-x86-vs2010-4.8.6.exe

那么可以使用如下命令进行校验

md5sum -c md5sums-4.8.6

Linux下使用md5sum计算和检验MD5码相关推荐

  1. c语言md5函数 linux,Linux下C语言计算文件的md5值(长度32)

    google了好久都没有找到合适的,其实我只需要一个函数,能计算文件的 md5 值就好, 后来找到了 md5.h 和 md5.c 的源文件,仿照别人的封装了个函数(他那个有问题,和 md5sum 计算 ...

  2. linux函数怎么判断文件已更改,Linux下使用md5sum查看文件及程序是否被修改

    你怎么知道你的系统是否被***过? 呵呵,你可能 说看日志啊 ,如果你遇到了高手他们会清除他们***的日志啊! 那怎么办呢,我们想一想 他们***系统做什么呢 ,无非就是取得一些系统的权嘛, 然后用这 ...

  3. linux通过md5验证文件完整性,Linux下校验下载文件的完整性(MD5,SHA1,PGP)

    Linux下的学习开始总是艰难的,但有的时候,却发现Linux下远比Windows的操作来的实在的多--这下载文件的完整性就是其中一件,让本人觉着很爽的一件事情.在编译安装各种软件的时候,总要到各个网 ...

  4. Qt+mpv制作windows/linux 下的动态壁纸软件(含源码)

    mpv是啥? mpv之前是mediaplayer,windwos之前好像都有预装这个,都来经过发展,现在是一个对跨平台开发很友好的播放器工具. Qt是啥? 制作桌面应用程序的开发语言及工具,基于C++ ...

  5. Linux下块驱动(总结)和源码解析

    一.简介 Linux三大驱动类型包括字符驱动.块驱动和网络驱动. 块设备是针对存储设备的,比如 SD卡.EMMC.NAND Flash.Nor Flash.SPI Flash.机械硬盘.固态硬盘等: ...

  6. 似物性检测——linux下运行objectness-v2.2并分析源码(pami2012论文)

    需要做一个似物性检测,首先去找了前段时间很火的程老师的论文BING看,大概了解objectness的含义,也跑了程老师的代码,因为自己不严谨,所以发短信问程老师还被说了,没好好看论文,不过后面自己还是 ...

  7. Linux下软中断过程(详细)源码总结

    一.简介 由于中断会打断内核中进程的正常调度运行,所以要求中断服务程序尽可能的短小精悍:但是在实际系统中,当中断到来时,要完成工作往往进行大量的耗时处理.因此期望让中断处理程序运行得快,并想让它完成的 ...

  8. 你的成绩取决于你最短的那一块木板?倾斜条件下容积的计算(附源码)

    有一个这样的著名理论,称之为木桶理论,大意是说: 一只水桶能装多少水取决于它最短的那块木板 .一只木桶想盛满水,必须每块木板都一样平齐且无破损,如果这只桶的木板中有一块不齐或者某块木板下面有破洞,这只 ...

  9. Linux下存储多路径软件MultiPath源码分析

    2019独角兽企业重金招聘Python工程师标准>>> 全局概览 测试环境为CentOS 7 X64 从RPM获取源码 $ cd ~/rpmbuild/ $ yumdownloade ...

最新文章

  1. 清华官宣:前百度总裁张亚勤正式加盟清华大学
  2. [大数据] zookeeper 安装和配置
  3. 阿里云云服务器更新GCC是提示错误解决方案
  4. 【正一专栏】读《怎样做社会研究》——社会研究的意义
  5. 数据源配置和自动管理
  6. Bootstrap 表格
  7. zigbee 协议栈的时钟和定时器分频
  8. 1091 N-自守数
  9. java禁止修改map_Java中实现不可变Map
  10. 什么是倾斜45度的火山图?
  11. ajax php cookie,php setcookie没有使用ajax调用
  12. primefaces教程_Primefaces仪表板组件示例教程
  13. 程序员如何在未来之路寻找自己的“龙椅”
  14. windows系统挂载存储阵列的iscsi映射虚拟磁盘
  15. 2022年6月大学英语六级作文
  16. 毕业设计 - 题目: 基于深度学习的疲劳驾驶检测 深度学习
  17. Unity实战篇 | unity接入QQ登录 详细过程——Android篇
  18. 罗技键盘的insert键需要按住Fn才能生效?教你修改!
  19. 家庭组网方案研究(2):路由器和光猫上的连接方式
  20. pygame 游戏开发

热门文章

  1. ServerSocket和Socket连接
  2. 安卓动画之ObjectAnimator
  3. python invoking c++
  4. C++中static_cast, dynamic_cast, const_cast用法/使用情况及区别解析
  5. SQL Server数据库表的基本操作(批量插入、删除、查询数据,删除表中重复数据方法)
  6. 必须要了解股权设计的四大核心
  7. python发票二维码条码识别_Python实现二维码、条形码识别
  8. 2021数据库课程设计培训笔记:【JAVA】部分
  9. excel中sheet不见了,怎么办
  10. 嵌入式主板的应用领域