md5sum 和 sha256sum用于 验证软件完整性

md5sum 和 sha256sum 都用来用来校验软件安装包的完整性,本次我们将讲解如何使用两个命令进行软件安装包的校验:

sha 是什么? 

      sha 为 安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。

     SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。后四者有时并称为SHA-2。SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的杂凑函数)的后继者。

md5 是什么?

     md5 为 消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。

关于两者之间有什么不同,请参考博文:https://www.cnblogs.com/xuyaowen/p/md5sum_and_sha256sum.html

md5sum 命令使用:

SYNOPSIS
       md5sum [OPTION]... [FILE]...
MD5SUM(1)                                                                            User Commands                                                                           MD5SUM(1)

NAME
       md5sum - compute and check MD5 message digest

SYNOPSIS
       md5sum [OPTION]... [FILE]...

DESCRIPTION
       Print or check MD5 (128-bit) checksums.

       With no FILE, or when FILE is -, read standard input.

       -b, --binary
              read in binary mode

       -c, --check
              read MD5 sums from the FILEs and check them

使用举例:

当前所有的文件:

diff ls
hello.c  hello_new.c  hello_test.c  hi.patchdiff pwd 
/home/xuyaowen/Desktop/workplace/diff

使用 md5sum 命令,进行生成md5串:

diff md5sum * | tee hi.md5
1e21e6bf97bf1e7a7ec9be72f3b068a0  hello.c
1e21e6bf97bf1e7a7ec9be72f3b068a0  hello_new.c
a6e14a356b8a2ad9c99e606e73143aaf  hello_test.c
f11ca2f605a3ab177f4101103c64c658  hi.patchdiff cat hi.md5 
1e21e6bf97bf1e7a7ec9be72f3b068a0  hello.c
1e21e6bf97bf1e7a7ec9be72f3b068a0  hello_new.c
a6e14a356b8a2ad9c99e606e73143aaf  hello_test.c
f11ca2f605a3ab177f4101103c64c658  hi.patchdiff 

使用md5命令选项 -c 和 md5 文件 进行校验:

diff md5sum -c hi.md5 
hello.c: OK
hello_new.c: OK
hello_test.c: OK
hi.patch: OK
➜  diff 

通过 显示 ,可以发现每个文件校验成功。

如果我们进行修改了其中的某个文件:

diff cat hello.c 
#include "stdio.h"
int main(int argc ,char **argv)
{
    printf("Hello World\n");
    return 0;
}
➜  diff vim hello.c 
➜  diff cat hello.c
#include "stdio.h"
int main(int argc ,char **argv)
{
    printf("Hello World\n");
    return 0;
}
// 修改了文件diff 

我们再进行校验:

diff md5sum -c hi.md5
hello.c: FAILED
hello_new.c: OK
hello_test.c: OK
hi.patch: OK
md5sum: WARNING: 1 computed checksum did NOT match

我们发现,其中被修改的文件校验失败 , md5sum 命令能和很好得检验文件的完整性。

sha256sum 命令 和 md5sum 命令一样的功能,只是使用算法不同,sha256相对 md5sum 更为准确,所以现在很多的系统的发行版都是使用 sha256sum 进行校验!

而且 sha 算法相关的算法很多,命令使用大同小异,只是使用的密钥长度不同。

NAME
       sha256sum - compute and check SHA256 message digest

SYNOPSIS
       sha256sum [OPTION]... [FILE]...

DESCRIPTION
       Print or check SHA256 (256-bit) checksums.

       With no FILE, or when FILE is -, read standard input.

       -b, --binary
              read in binary mode

       -c, --check
              read SHA256 sums from the FILEs and check them

       --tag  create a BSD-style checksum

举个实际的例子:kali linux

Image Name Download Size Version sha256sum
Kali Linux 64 Bit HTTP | Torrent 2.8G 2018.2 56f677e2edfb2efcd0b08662ddde824e254c3d53567ebbbcdbbf5c03efd9bc0f
Kali Linux Light 64 Bit HTTP | Torrent 865M 2018.2 554f020b0c89d5978928d31b8635a7eeddf0a3900abcacdbc39616f80d247f86
Kali Linux E17 64 Bit HTTP | Torrent 2.6G 2018.2 be0a858c4a1862eb5d7b8875852e7d38ef852c335c3c23852a8b08807b4c3be8
Kali Linux Lxde 64 Bit HTTP | Torrent 2.6G 2018.2 449ecca86b0f49a52f95a51acdde94745821020b7fc0bd2129628c56bc2d145d

这是 kali linux 的光盘,我们现在使用 curl -O 命令进行下载,然后使用 sha256sum 命令进行校验:

➜  workplace curl -O http://mirrors.neusoft.edu.cn/kali-images/kali-2018.2/kali-linux-light-2018.2-amd64.iso
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  864M  100  864M    0     0   518k      0  0:28:26  0:28:26 --:--:--  661k
➜  workplace sha256sum kali-linux-light-2018.2-amd64.iso 
554f020b0c89d5978928d31b8635a7eeddf0a3900abcacdbc39616f80d247f86  kali-linux-light-2018.2-amd64.iso

通过比较,我们可以发现sha256sum 生成的散列值与表中的哈希序列相同。

保持更新,转载请注明出处;cnblogs.com/xuyaowen。

posted @ 2018-07-26 17:09  "Michael_Xu"  阅读(19301)  评论(1编辑  收藏  举报