zoukankan      html  css  js  c++  java
  • 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
    ");
        return 0;
    }
    ➜  diff vim hello.c 
    ➜  diff cat hello.c
    #include "stdio.h"
    int main(int argc ,char **argv)
    {
        printf("Hello World
    ");
        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 生成的散列值与表中的哈希序列相同。

    保持更新,转载请注明出处。

  • 相关阅读:
    枚举扩展,感觉用处很大
    基础缓存操作类
    ASP.NET 4.0 全局取消表单危险字符验证
    拦截所有经过IOC的方法
    关于使用EPPlus插入列,名称管理器公式失效问题案列分析
    IocFactory容器实体
    线程扩展
    IEnumerable扩展支持Add,Remove等操作
    自定义特性。配合枚举使用棒棒哒
    在数据仓储的情况下进一步封装数据库基础操作,此版本为异步版本
  • 原文地址:https://www.cnblogs.com/xuyaowen/p/md5sum_sha256_usages.html
Copyright © 2011-2022 走看看