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()                                                                            User Commands                                                                           MD5SUM()

NAME
md5sum - compute and check MD5 message digest SYNOPSIS
md5sum [OPTION]... [FILE]... DESCRIPTION
Print or check MD5 (-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.patch
➜ diff 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.patch
➜ diff cat hi.md5
1e21e6bf97bf1e7a7ec9be72f3b068a0 hello.c
1e21e6bf97bf1e7a7ec9be72f3b068a0 hello_new.c
a6e14a356b8a2ad9c99e606e73143aaf hello_test.c
f11ca2f605a3ab177f4101103c64c658 hi.patch
➜ diff

使用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 ;
}
➜ diff vim hello.c
➜ diff cat hello.c
#include "stdio.h"
int main(int argc ,char **argv)
{
printf("Hello World\n");
return ;
}
// 修改了文件
➜ diff

我们再进行校验:

➜  diff md5sum -c hi.md5
hello.c: FAILED
hello_new.c: OK
hello_test.c: OK
hi.patch: OK
md5sum: WARNING: 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 (-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
864M 864M 518k :: :: --:--:-- 661k
➜  workplace sha256sum kali-linux-light-2018.2-amd64.iso
554f020b0c89d5978928d31b8635a7eeddf0a3900abcacdbc39616f80d247f86 kali-linux-light-2018.2-amd64.iso

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

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

md5sum 和 sha256sum用于 验证软件完整性的更多相关文章

  1. md5是哈希算法的改进加强,因为不同原始值可能hash结果一样,但md5则改善了用于验证消息完整性,不同md5值原始值也必将不一样

    md5是哈希算法的改进加强,因为不同原始值可能hash结果一样,但md5则改善了用于验证消息完整性,不同md5值原始值也必将不一样

  2. 包介绍 - Fluent Validation (用于验证)

    Install-Package FluentValidation 如果你使用MVC5 可以使用下面的包 Install-Package FluentValidation.MVC5 例子: public ...

  3. 注册 Gmail,验证手机号码的时候提示“此号码不能用于验证”,怎么解决?

    地址:https://www.zhihu.com/question/34834773   刚刚注册成功.折腾了好久,最后换了Chrome浏览器就成功了.手机号在注册的第一个界面时就填+86 xxxxx ...

  4. 4500-X验证镜像完整性

    1.配置IP地址: Switch(config)#int f1Switch(config-if)#ip add 10.1.1.1 255.255.255.0Switch(config-if)#no s ...

  5. dpkg:处理 xxx (--configure)时出错解决办法,也可用于卸载软件出错的情况

    dpkg:处理 xxx (--configure)时出错解决办法今早安装nfs时出现问题,找到该文,备份留用.然后在网上找到了这片文章,按步骤走就解决了,中间会提示自动卸载一下,执行那个命令就好了,我 ...

  6. Oracle Client安装报错:引用数据不可用于验证此操作系统分发的先决条件

    原因是Oracle Client 11g版本不支持最新的Win10系统. 打开Oracle Client 11g安装包目录:\client\stage\cvu 编辑该目录下的两个xml文件:oracl ...

  7. VB的一些项目中常用的通用方法-一般用于验证类

    1.VB的一些项目中常用的通用方法: ' 设置校验键盘输入值,数字 Public Function kyd(key As Integer) As Integer Dim mychar mychar = ...

  8. Linux应用程序基础

    文件位置:     系统命令:/bin和sbin目录,或shell内部指令:     应用程序:/usr/bin和/usr/sbin目录.         /usr/bin:普通执行程序文件:     ...

  9. 转:Centos6.3添加解码器播放MP3和常见视频音频

    原文来自于:http://blog.csdn.net/odaynot/article/details/8462273 参考地址: http://wiki.centos.org/AdditionalRe ...

随机推荐

  1. 上传文件限制导致413-Request Entity Too Large

    在使用Nginx时,在异步上传图片到服务器时,发现抛出“error”错误,仔细发现抛出错误内容为:413-Request Entity Too Large,查看Tomcat运行日志时发现后台没有接收到 ...

  2. webpack4 自学笔记三(提取公用代码)

    全部的代码及笔记都可以在我的github上查看, 欢迎star:https://github.com/Jasonwang911/webpackStudyInit/tree/master/commonT ...

  3. UVa Dropping Balls

    题目链接: https://cn.vjudge.net/problem/UVA-679 /* 问题 输入完全二叉树的层数D和有几个小球滚落,计算最后一个小球落入的叶子结点的小号. 解题思路 直接模拟超 ...

  4. 写个OAuth2.0的请求端来测试自己的OAuth2.0服务端(二)

    在上一篇文章中,我们介绍了怎么创建自己的服务器,现在我们开始写个client端,来测试. 我们创建一个MVC项目,叫TestOAuthClient 1. 代码开始 1)第一步,我们创建一个MainCo ...

  5. Html.DropDownListFor练习(2)

    下午有做了练习<Html.DropDownListFor练习>http://www.cnblogs.com/insus/p/3382575.html 在实现过程中,需要创建一个List&l ...

  6. ExtJs 中Viewport的介绍与使用

    ExtJs 中Viewport的介绍与使用 VeiwPort 代表整个浏览器显示区域,该对象渲染到页面的body 区域,并会随着浏览器显示区域的大小自动改变,一个页面中只能有一个ViewPort 实例 ...

  7. 【Linux】CentOS安装solr 4.10.3

    Solr是什么? Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索 ...

  8. 转载 - java中接口的向上转型。和多态性

    发现一篇对接口总结很精简的文章 1.在java中接口就是一个完全抽象的类,跟抽象类一样不能产生对象,但是可以作为对象的引用,可以由其实现类向上转型,它就跟超类一样, 向上转型了,可以很好的利用接口,可 ...

  9. html 手机web超出屏幕宽度的内容不换行,并产生横向滚动条

     html 手机web超出屏幕宽度的内容不换行,并产生横向滚动条 white-space: nowrap;overflow-x: scroll;    

  10. Maven安装本地jar包

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.1.0 -Dpackaging= ...