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

目录:
(一)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

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

原文地址:https://blog.51cto.com/13613726/2460714

时间: 2024-10-14 08:59:35

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

浅谈MD5及简单使用

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

Linux特殊符号浅谈

Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可以分以下几类 1.管道符号 字符 名称 功能描述 | 管道 传递的普通的字符串,来自于前一个命令 |xargs 管道流转换 与xargs 传递的是把字符串变成了文件名 2.目录结构 字符 名称 功能描述 . 当前目录 .. 当前目录上一级目录 3.重定向符号 字符 名称 功能描述 > 输出重定向 会

Java 自带MD5 校验文件

http://www.iteye.com/topic/1127319 前天第一次发表博客到论坛,关于Java文件监控一文,帖子地址在:http://www.iteye.com/topic/1127281 评论的朋友很多,下载代码的朋友很不少,感谢在论坛上看我帖子的朋友,还有回复评论的朋友,给我提供建议的朋友. 从这些建议中,虽然语言简短,但是却有的是一语中的,这里说一下一下关于帖子的代码中HashFile中的MD5文件校验算法, 该算法是使用Java自带的MessageDigest类,测试结果,

自动校验文件夹及其内容shell程序(md5 校验文件夹中所有数据)

一.问题的来源有时候copy一些重要的数据,得到之后需要与原数据进行核对是否数据一致.这就需要进行校验. 二.问题的分析校验数据有多种方法,最简单的是使用文件的md5码进行校验.但是文件很多,手动的每个文件进行md5校验显然不合适,这就需要编写shell程序解决. 三.问题的解决通过shell程序解决文件校验问题1.通过命令得到文件md5值比如得到的数据文件夹为 data 文件夹则在data 文件夹中输入以下命令 find  ./ -type f  -print | xargs md5sum  

(转)浅谈MD5加密算法中的加盐值(SALT)

我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码. 加Salt可以一定程度上解决这一问题.所谓加Salt方法,就是加点“佐料”.其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列.而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确. 这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统

Web应用你加盐了吗?——浅谈MD5加密算法中的加盐值(SALT)

转自:http://blog.csdn.net/blade2001/article/details/6341078 我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码. 加Salt可以一定程度上解决这一问题.所谓加Salt方法,就是加点“佐料”.其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列.而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后

linux服务器开发浅谈

[开发前准备] 在进行linux服务器开发之前,必须很清楚地了解所开发的对象需要考虑的相关问题比如:功能架构:提供服务的模块体系结构稳定性:服务器的出core率,内存泄露情况性能:请求与返回的速度与正确性负载能力:能同时访问的最大数量和频度 根据不同服务器对象的环境和应用,服务器开发的对应手段相差甚远.比如就客户端连接时间较短却又比较频繁的服务器(例如HTTP服务器)而言,在可选的服务器结构中,预先派生进/线程的结构就要比并发式结构高效 总之,在开发服务器之前,必须进行完整的服务器开发需求分析,

Linux文件目录权限浅谈

1.基本权限三种(1)r (read) 读 针对目录,有读(r)权限就代表能对此目录有列表功能,就是可以执行ls命令进行查看,另外还有cp的功能.针对文件,有读(r)权限就代表能对此文件有阅读功能,可以通过cat等命令查看文件内容. (2)w (write) 写 针对目录,有写(w)权限就代表着在此目录下创建文件和目录,可以通过touch,mkdir等命令创建文件和目录,另外还可以删除此目录下的文件.针对文件,有写(w)权限就代表着对此文件可以写入新的内容和修改文件内容. (3)x (execu

linux命令:浅谈shell中如何进行算术运算

1.let 算术运算表达式 let C=$A+$B eg: A=3  B=5  let C=$A+$B    echo $C  [[email protected] test]# A=3 [[email protected] test]# B=3 [[email protected] test]# let C=$A+$B [[email protected] test]# echo $C 6 2.$[算术运算表达式]        C=$[$A+$B] eg: A=2  B=6  C=$[$A+