MD5检查下载文件的有效性

--前言
MD5是什么?
维基百科是这么说的:
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的[密码散列函数],可以产生出一个128位的散列值(hash value),用于确保信息传输完整一致。MD5由罗纳德·李维斯特设计,于1992年公开,用以替换[MD4]算法。这套算法的程序在 [RFC 1321]中被加以规范。将[数据](如一段文字)运算变为另一固定长度值,是散列算法的基础原理。2004年,证实MD5算法无法防止碰撞,因此无法适用于安全性认证,如[SSL][公开密钥认证]或是[数字签名]等用途。

一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端使用。

--语法
md5sum (选项) (参数)

--选项
-b, --binary read in binary mode
-c, --check read MD5 sums from the FILEs and check them
-t, --text read in text mode (default)
Note: There is no difference between binary and text mode option on GNU system.

The following three options are useful only when verifying checksums:
--quiet don't print OK for each successfully verified file
--status don't output anything, status code shows success
-w, --warn warn about improperly formatted checksum lines

  --help     display this help and exit
  --version  output version information and exit

当然你可以查看或生成一个文件的md5值,也可以通过下载要对比文件的md5校验文件获得其文件的md5值。

比如查看:

md5sum md5.txt

170ecb8475ca6e384dbd74c17e165c9e md5.txt

生成md5文件:

md5sum md5_test.txt > md5_test.md5

对比md5_test.txt文件是否被修改过(打印OK则表示未被修改过,这也是MD5校验的意义):

md5sum md5_test.txt -c md5_test.md5

md5_test.txt: OK

--实例
如何校验一个tar包的有效性?
1、存在一个tar包,以及下载该tar包的md5校验文件

ls -ltr hadoop-2.6.0.tar*

-rw-r--r--. 1 root root 958 Dec 1 2014 hadoop-2.6.0.tar.gz.mds
-rw-r--r--. 1 root root 195257604 Dec 1 2014 hadoop-2.6.0.tar.gz
2、打印出校验文件中的MD5值

cat hadoop-2.6.0.tar.gz.mds |grep 'MD5'

hadoop-2.6.0.tar.gz: MD5 = 37 F3 71 FA AB 03 3B B8 C2 CB 50 10 0C 57 74 DC
3、检查tar包本身的MD5值

md5sum hadoop-2.6.0.tar.gz |tr "a-z" "A-Z"

37F371FAAB033BB8C2CB50100C5774DC HADOOP-2.6.0.TAR.GZ
4、对比
37 F3 71 FA AB 03 3B B8 C2 CB 50 10 0C 57 74 DC
37 F3 71 FA AB 03 3B B8 C2 CB 50 10 0C 57 74 DC
5、一致表明,tar包完整未被修改。如果两个值不一样,建议重新下载。

推荐阅读更多精彩内容