【我的Linux,我做主!】浅谈MD5校验文件完整一致性

发布时间:2020-07-01 11:13:53

来源:51CTO

阅读:457

作者:Tom王

目录:

(一)MD5介绍

(二)md5sum命令

(三)实战演练

(一)MD5介绍

(1.1)MD5即Message-Digest Algorithm 5(信息-摘要算法 第5版),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又名:摘要算法、哈希算法),主流编程语言普遍已由MD5实现。将数据运算为另一固定长度值(十六进制的为32位),是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。MD5的作用是大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

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

(二)md5sum命令

(2.1)md5sum命令用于生成和校验文件的md5值,它会逐位对文件的内容进行校验,校验的是文件的内容,与文件名无关,即文件内容相同,其md5值相同。md5值是一个128位的二进制数据,转换成16进制则是32位(128/4)的进制值。md5校验,有很小的概率不同的文件生成的md5可能相同,比md5更安全的校验算法还有SHA系列的。在网络传输时,我们校验源文件获得其md5sum,传输完毕后,校验其目标文件,并对比如果源文件和目标文件md5一致的话,则表示文件传输无异常,否则说明文件在传输过程中未正确传输。

(2.2)用法:md5sum [选项] [文件],显示或检查MD5(128-bit)校验和,若没有文件选项,或者文件处为“-”,则从标准输入读取。校验和会按照RFC 1321规范生成,当进行检查时,给出的输入格式应该和程序的输出样板格式相同,默认的输出模式时输出一行校验和校验结果,并有一个字符来表示文件类型(“*”代表二进制,“ ”空格代表纯文本),并同时显示每个文件的名称。

-b,--binary:以二进制模式读取

-c,--check:从文件中读取MD5的校验值并予以检查

-t,--text:以纯文本模式读取(默认)

以下三个选项在进行校验时非常有用:

--quiet:不为校验成功的文件输出OK

--status:不输出任何内容,使用退出状态号显示成功

-w,--warn:对格式不正确的校验和进行警告

--strict with,--check:exit non-zero for any invalid input

--help:显示此帮助信息并退出

--version:显示版本信息并退出

(2.3)我们可以使用--help查看帮助信息

# md5sum --help

(三)实战演练

(3.1)获取字符串的MD5值,字符串“hello”的MD5,我们使用md5sum用来显示或检查MD5(128-bit)校验和,若没有文件选项,或者文件出为“-”,则从标准输入读取,cut用来从标准输入或文本文件中剪切列或域,剪切文本可以将之粘贴到一个文本文件,-d指定域空格和tab键不同的域分隔符,-f1表示第一个域。

# echo -n "hello" | md5sum | cut -d ' ' -f1---获取字符串的MD5值

(3.2)获取文件的MD5值,我们使用了从download.qt.io下载的源码包qt-4.8.6,可以使用下面的命令从官网下载,然后再计算出文件的MD5值。

# wget http://download.qt.io/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz ---将软件从官网下载下来

# md5sum qt-everywhere-opensource-src-4.8.6.tar.gz | cut -d '' -f1---获取qt-4.8.6源码包的MD5值

(3.3)使用MD5校验iso文件,进行md5的校验我们需要首先知道文件的md5值,一般来说文件的下载地址会为我们提供检验用的md5文件,一般来说这些文件使用如下的命令生成的,接着把qt-everywhere-opensource-src-4.8.6.tar.gz和其验证文件qt-everywhere-opensource-src-4.8.6.tar.gz.md5放到同一目录下(图2-5),然后使用下面的命令进行检验(图2-6)。

# md5sum qt-everywhere-opensource-src-4.8.6.tar.gz > qt-everywhere-opensource-src-4.8.6.tar.gz.md5---使用qt-4.8.6的源码包生成一个md5文件

# mkdir md5test---创建一个md5test文件

# mv qt-everywhere-opensource-src-4.8.6.tar.gz qt-everywhere-opensource-src-4.8.6.tar.gz.md5 md5test/---将qt-4.8.6的源码包和验证文件放到统一目录下

# md5sum -c qt-everywhere-opensource-src-4.8.6.tar.gz.md5---使用md5sum检验下载文件的完整性

(3.4)当然我们下载的文件,用md5进行检验是检查下载文件的完整性,自然不能用自己生成的md5校验文件,一般来说文件的下载网站会为我们提供检验用的md5文件,其中qt-everywhere-opensource-src-4.8.6.tar.gz的md5校验文件可以从http://download.qt.io/archive/qt/4.8/4.8.6/md5sums-4.8.6 来下载,我们可以查看md5sums-4.8.6中的内容。

# wget http://download.qt.io/archive/qt/4.8/4.8.6/md5sums-4.8.6 ---下载校验文件

# cat md5sums-4.8.6---查看校验文件中的内容

(3.5)最后我们将qt-everywhere-opensource-src-4.8.6.tar.gz软件和md5sums-4.8.6校验文件都放置在/root/家目录中,然后进行文件的校验。此时我们发现第一个文件是确定存在的,其他的由于没有下载显示打开失败,因此校验有效。

# md5sum -c md5sums-4.8.6

—————— 本文至此结束,感谢阅读 ——————

linux md5 大文件慢,【我的Linux,我做主!】浅谈MD5校验文件完整一致性相关推荐

  1. python语言源程序文件类型_浅谈Python的文件类型

    Python的文件类型主要分为3种:源代码(source file).字节码(byte-code file).优化的字节码(optimized file).这些代码都可以直接运行,不需要编译或者连接. ...

  2. c语言实现md5比java难_浅谈md5弱类型比较和强碰撞

    前言 在CTF中,md5的题目太常见了,虽然有很多这方面的文章,但相对来说比较零散,这里主要将自己学习和比赛时遇到的md5弱类型和强碰撞的题目从浅到深地梳理一下. 本文涉及知识点实操练习:浅谈md5弱 ...

  3. file相对路径java_浅谈java 中文件的读取File、以及相对路径的问题

    一.对于java项目中文件的读取 1.使用system 或是 系统的properties对象 ①直接是使用 string relativelypath=system.getproperty(" ...

  4. linux 目录md5校验,【我的Linux,我做主!】浅谈MD5校验文件完整一致性

    目录: (一)MD5介绍 (二)md5sum命令 (三)实战演练 (一)MD5介绍 (1.1)MD5即Message-Digest Algorithm 5(信息-摘要算法 第5版),用于确保信息传输完 ...

  5. Linux手册大合集,收藏!Linux常用命令合集

    收藏!Linux常用命令合集 1. 帮助命令 1.1 man 命令名称,man 的意思是 manual,即手册,对于大多数命令都可以使用这个命令来查看其使用的方法. 1.2 help 命令名称 或者 ...

  6. linux内核md5,浅谈MD5及简单使用

    原理简介: MD5即Message-Digest Algorithm 5(信息-摘要算法 第5版),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又名:摘要算法.哈希算法),主流编程语言普 ...

  7. oracle外部结合,浅谈Oracle外部文件

    所谓Oracle外部文件外部文件,意味着这些文件从严格意义上来讲并不属于Oracle数据库的一部分.Oracle外部文件也就是属Oracle物理存储结构的一部分,属于外面嵌入到Oracle数据库内部的 ...

  8. 浅谈Robots.txt文件给网站带来的好处

    作为一名web优化职员,我们都很清楚robots.txt文件对我们网站的需要性,Robots.txt文件只不过一个纯文本文件,它就像web地图异样,给搜寻引擎指明线路,当蜘蛛搜索一个站点时,它起首蒲伏 ...

  9. 单片机sleep函数的头文件_单片机代码模块化设计思想浅谈

    前言:前段时间分享的文章[单片机裸机代码框架设计思路],很多读者给我留言,觉得很不错,对于初学者而言,这是一个进阶的技巧,对于我而言,这是对自己总结和表达能力的一个提升. 本文章我们再谈谈单片机代码的 ...

  10. 第二篇:浅谈自定义头文件可能导致的重定义问题

    前言 总看到一些地方说定义语句别放在头文件中,因为会引起重定义.但具体编程中,却发现有些定义又不得不放在头文件中. 这可如何是好?基于对这个问题的思考,有了这篇随笔. 重定义产生的情况 情况一:多个源 ...

最新文章

  1. P5357 【模板】AC自动机(二次加强版)(AC自动机建fail树dfs求模式串出现次数)
  2. SIMPLE/REUSE/BATCH 三种执行器的区别?
  3. JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited)
  4. Struts2下创建自定义类型转换器(表单中日期的处理)
  5. 车厢重组(信息学奥赛一本通-T1310)
  6. WP7中对ListBox的ItemTemplate中子元素的后台操作
  7. android嵌入式面试题,嵌入式软件面试题 经典笔试题(含答案)
  8. 软件_git异常错误[博]
  9. WCF REST (一)
  10. 并发编程学习之线程池工作原理
  11. 射频微电子学_射频人的双十二,应该这样过……
  12. android桌面小工具,超好用的手机桌面小组件,一键美化桌面,实用又美观
  13. ds18b20温度转换指令_使用STM32控制DS18B20温度传感器
  14. 推荐几个无版权的免费图片网站
  15. 【2021最新综述】Deep Neural Approaches to Relation Triplets Extraction:A Comprehensive Survey
  16. ubuntu 12.04 从硬盘安装过程
  17. Google Instant Apps
  18. Kotlin版 极简 干货集中营 APP
  19. 【科普贴】MIPI协议之D-PHY协议详解
  20. chrome浏览器访问https网页提示不是私密连接,点击高级没有继续访问按钮提示

热门文章

  1. 独家研究 I 某新一线城市中高端养老社区项目(CCRC)入住客户画像深度洞察研究报告
  2. dw添加下拉菜单_怎样用dreamweaver制作网站下拉菜单
  3. linux sys文件的创建
  4. swf播放器air android 版,网极SWF播放器安卓版
  5. 供应商太多,怎么才能高效比价?
  6. 中国半导体仍然弱小 产业生态体系亟需完善
  7. Xiaojie雷达之路---脉冲压缩
  8. SDUT-3337 计算长方体、四棱锥的表面积和体积
  9. deepfacelab SAE 模型训练参数详解
  10. 要闻君说:华为“发飙”了;快手抛出了1000+社招岗位;迅雷2018年度财报:云连续三年上涨;定论!小米成立AIoT战略委员会...