使用MD5和SHA验证文件是否完整

发布日期:

在很多下载网站比如镜像站都会提供有下载文件的MD5、SHA1、SHA256验证信息。

例如在上面的开源镜像站中,可以找到从该站下载Ubuntu 18.04 ISO文件的MDS校验信息

129292a182136a35e1f89c586dbac2e2 *ubuntu-18.04-desktop-amd64.iso
e35f45caf1d26ed5b1217d67f6ee86e8 *ubuntu-18.04-live-server-amd64.iso

我们可以根据这一字符串来校验下载的文件是否完整
通常来说,校验的方式有两种:MD5和SHA。SHA又分为SHA1、2、3等,又或者是连续校验的次数,如SHA256、384等,没带数字的通常被认为是SHA1。
虽然这两种校验方式的算法不同,但都会返回一串具有固定长度的随机字符串。
当你下载的文件与源文件有丝毫的不一样,这个校验值都会产生变化。
MD5的校验值(哈希值)比任一长度的SHA值都要短,是32位。SHA1是40位、SHA256是65位。

校验方式

Linux

大部分Linux发行版都自带有校验文件即计算各种哈希值得命令行工具。
使用MD5算法的工具为md5sum

md5sum ubuntu-18.04-desktop-amd64.iso

然后就会得到结果

129292a182136a35e1f89c586dbac2e2  ubuntu-18.04-desktop-amd64.iso

通常,对于这样一串字符串,你不需要一个个字符去验证,为了节约时间,你可以只对比一下前四位和后四位字符是否一样,如果匹配,那么散列值一般就是相等的。
如果你很较真,你也可以 cat 你下载的那个校验文件来一一对比。
我在下载大文件后(尤其是使用断点续传工具)都会去校验一下,因为我以前就因为使用aria2下载系统镜像后刻录完发现文件是损坏的。
在Linux中,校验SHA值的命令为sha1sumsha256sum
使用格式与md5sum无异。

sha256sum ubuntu-18.04-desktop-amd64.iso
a55353d837cbf7bc006cf49eeff05ae5044e757498e30643a9199b9a25bc9a34  ubuntu-18.04-desktop-amd64.iso

macOS

macOS中的命令为:

  • md5: md5 filename
  • SHA: shasum -a 1 filenameshasum -a 256 filename

Windows

一想到Windows,脑子里肯定浮现的是图形化工具,但是在命令行中也内置有同样的校验命令。
命令格式为:certutil -hashfile path/to/file ALGORITHM
例如你要校验MD5的值:

certutil -hashfile path/to/file MD5

SHA256:

certutil -hashfile path/to/file SHA256

建议在使用断点续传工具去下载大文件时都去校验一下文件是否完整

发布日期:
分类:Linux