目录:
(一)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
来源: http://www.bubuko.com/infodetail-3345244.html