系统小窝欢迎您

当前位置:系统小窝 > 系统教程 > Linux教程 >

如何检测Linux系统已下载文件的完整性

时间:2021-04-09    来源:般砖的    人气:

因为Linux系统安装软件较为复杂,如果下载的软件被修改过的话安装起来就十分麻烦,校检Linux系统下载文件的完整性就变得十分重要,下面小编就给大家介绍下如何校检Linux系统中下载文件的完整性。

校验方法当前一般是MD5,SHA1,PGP三种。在Windows那个漫长的岁月里(沧桑有木有),一般只能接触到前两种mdash;mdash;前提是你会去校验的话。

MD5校验

原理:对文件进行MD5 Hash,求出文件的MD5哈希值,通过下载后文件MD5哈希值和发布者提供的MD5哈希值是否一致来判断文件是否在发布者发布之后被篡改过。

说明:寿命老长的一个Hash算法,适用范围广,网站存储密码也经常使用。不同的文件产生的MD5哈希值是唯一的,但这点已经有办法通过对文件进行少量的修改,让文件的MD5后的哈希值保持一致。

使用:在CentOS下,要对文件进行MD5 Hash是很简单的,一个 md5sum 命令即可:

代码如下:

# $是终端提示符,非输入。

# #号是注释

# 没有提示符的是输出

#直接输出MD5 Hash

$ md5sum your-downloaded-file-name

fd4a1b802373c57c10c926eb7ac823d8 your-downloaded-file-name《/p》 《p》#将MD5 Hash值保存到md5-hash.txt文件中。

$ md5sum your-downloaded-file-name 》 md5-hash.txt

# 显示输出的md5-hast.txt内容

$ cat md5-hash.txt

fd4a1b802373c57c10c926eb7ac823d8 your-downloaded-file-name《/p》 《p》# 通过md5-hash.txt来校验你下载的文件是否正确

$ md5sum -c md5-hash.txt

your-downloaded-file-name: OK

你是文件的发布者话,你可以通过md5sum把文件的哈希值发送给验证者,这样下载你文件的人就可以通过MD5哈希值来验证你的文件正确性。反过来,我们在网站上下载文件之后,同时可以获取发布者的MD5哈希值和本地生成的Hash值对比,如果一致,认为文件是正确的。

 

SHA1校验

原理: 原理同MD5一样,都是通过对文件进行HASH求值,比对文件发布者发布的HASH值,通过是否相等判断文件是否被篡改

说明: SHA1 HASH求值方法可以说是MD5的一个升级版本(SHA1 20位,MD5 16位),在HASH求值方面,MD5退出的舞台将有SHA1占据。SHA家族有五个算法:SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,后四种有时候称为SHA2

使用: CentOS有SHA1的命令: sha1sum

代码如下:

# 说明同上

# 直接输出SHA1 Hash

$ sha1sum your-downloaded-file-name

12dc96cbd822598c1230c87622f3591461a77227 your-downloaded-file-name《/p》 《p》# 将SHA1 Hash值保存到文件中

$ sha1sum your-downloaded-file-name 》 sha1-hash.txt

# 显示文件内容

$ cat sha1-hash.txt

12dc96cbd822598c1230c87622f3591461a77227 your-downloaded-file-name《/p》 《p》#通过sha1-hash.txt来校验我们下载的文件your-downloaded-file-name

# 注意,文件必须要要通过txt文件中的路径知道哦

$ sha1sum -c sha1-hash.txt

your-downloaded-file-name: OK

这个SHA1和MD5基本一致,需要补充说明下的是,在使用 md5sum 也好,还是 sha1sum 也罢,校验文件的时候,务必要让系统能够根据文件中提供的路径找到文件,如果文件找不到,是没有办法进行校验的。

如果是做多个文件的Hash校验,可以通过一个文件保存多个文件的Hash值即可。

PGP校验

原理:使用非对称加密,程序生成唯一的密钥对(公钥和私钥:Public Key和Private Key/Secret Key)。操作方法如下:

1.发布者通过用生成的密钥对中的私钥对要发布的文件进行签名,得到签名文件(sign);

2.发布者将密钥对中的公钥发布到公钥服务器;

3.发布者将文件和用私钥生成的签名一起发布;

4.验证者下载发布者发布的文件和签名;

5.使用PGP的程序获取的发布者第二步发布的公钥;

6.使用公钥校验文件签名

说明:签名算法中,密钥的用处分别是:公钥用于加密信息和验证,私钥用于解密和签名。私钥掌握在信息发布方,公钥可以任意分发。信息发布方用密钥进行对信息进行签名,接收方在获取公钥后,可以用公钥对发布方发布的信息+签名进行验证。如果验证失败则认为信息被篡改。在网络中,我们经常碰到的HTTPS协议,使用了同样的机制。

使用:由于PGP是商业应用程序,在CentOS/Linux中,具有同类功能的是GPG(也就是:GnuPG),同样遵守OpenPGP数据加密标准( RFC 4880 ),没有安装可以用 yum install gnupg 安装,命令是: gpg

代码如下:

# 说明同上

# 由于过程相对复杂,并且在实际使用中,校验用的比较多,因此这里只介绍文件的校验过程。

# 在获得文件和签名时,我们先用gpg校验签名,此时文件必须存在

$ gpg --verify downloaded-file-sign.asc

 

这里有多种情况,如果你只有签名,但生成签名的文件不存在时(系统没找到,一般应该放在同目录下面),返回的是:

代码如下:

gpg: 不含签名的数据

gpg: canlsquo;t hash datafile: No data

当你有文件的时候,但还没有与签名对应的公钥时,gpg返回的信息类似下面:

代码如下:

gpg: 于 2013年05月06日 星期一 18时27分27秒 CST 创建的签名,使用 RSA,钥匙号 47ACDAFB

gpg: 无法检查签名:No public key

注意:上面的信息在不同的文件和操作系统上生成的信息是不同的。但在没有公钥的时候,你可以发现gpg提供了一个该签名对应的钥匙号:47ACDAFB,这个是我们需要找的公钥。

上面已经说过,发布者已经将公钥发布到公钥服务器中,供验证者下载,因此我们需要到公钥服务器中下载公钥,要下载公钥,钥匙号就很重要了。

可用的公钥服务器可以通过wikipedia 上的Key Server条目来查看常用的一些key服务器列表。这里使用hkp://pgp.mit.edu:

代码如下:

# 获取服务器上的public key

$ gpg --keyserver hkp://pgp.mit.edu --recv-keys 47ACDAFB

gpg: 下载密钥lsquo;47ACDAFBrsquo;,从 hkp 服务器 pgp.mit.edu

gpg: 密钥 47ACDAFB:公钥;Stephan Mueller 《Stephan.Mueller@atsec.com》;已导入

gpg: 没有找到任何绝对信任的密钥

gpg: 合计被处理的数量:1

gpg: 已导入:1

--recv-keys要与--keyserver配合使用,导入密钥对的公钥之后,我们就能够使用这个公钥来验证我们的签名了。

再次运行我们之前的验证命令(gpg --verify sign-file),就可以看到验证的结果了。

代码如下:

#这时候我们再次验证我们的签名,就能得到验证结果了

$ gpg --verify downloaded-file-sign.asc

gpg: 于 2013年05月06日 星期一 18时27分27秒 CST 创建的签名,使用 RSA,钥匙号 47ACDAFB

gpg: 完好的签名,来自于;Stephan Mueller 《Stephan.Mueller@atsec.com》;

gpg: 警告:这把密钥未经受信任的签名认证!

gpg: 没有证据表明这个签名属于它所声称的持有者。

主钥指纹: B0F4 2D33 73F8 F6F5 10D4 2178 520A 9993 A1C0 52F8

看到这个结果,至少确认一个结果:这个文件是没有被篡改过的。

一般我们到这步也就差不多了。

但注意消息里面有个警告,说明这个是未受信任的签名认证。因为这个公钥谁都可以发布上去的,如果你确实需要进一步认证,可以在签名认证之前,你能还要联系下真正的发布者,确认这个密钥的信息mdash;mdash;指纹!这个是这个算法的一个弱点。

如果签名认证已经通过,你也就可以安心的在自己的系统内编译,安装它了。

上面就是校检Linux系统中下载文件的完整性的方法介绍了,相信很多人都没有校检下载文件完整性的习惯,如果能够在安装前进行检验的话,就能够减少很多不必要的麻烦。如果你还想了解更多Linux系统的相关知识,不妨多多关注系统之家吧。

相关文章

  • Linux系统中如何校验SHA1和MD5?

    Linux系统中如何校验SHA1和MD5?

    SHA1和MD5都是可唯一确定文件的重要标志,只有SHA1或者MD5值一致才能保证下载到的文件是正确的。那么,在Linux系统中该如何校验SHA1和MD5呢?...
    2021-04-09 03.04.29
  • 备份和恢复Linux文件权限的方法

    备份和恢复Linux文件权限的方法

    在Linux系统的使用过程中,有时候我们会通过一些工具备份或恢复文件权限来进行文件日常管理。其实备份和恢复文件权限使用访问控制列表并不难,下面...
    2021-04-09 03.04.54
  • Linux文件名字批量修改步骤 Linux修改文件名的方法

    Linux文件名字批量修改步骤 Linux修改文件名的方法

    在Linux环境下修改文件名可以有不同的命令方式,比如rename、mv都可以进行修改,如果用户正在了解这方面的知识,可以阅读下文了解Linux修改文件名以及批...
    2021-04-09 03.04.00
  • Linux下如何利用访问控制列表来限制用户权限

    Linux下如何利用访问控制列表来限制用户权限

    Linux下的访问控制列表(ACL)主要用来控制用户的权限,可以做到不同用户对同一文件有不同的权限,那么具体要如何操作呢?下面小编就教你如何在Linu...
    2021-04-09 07.04.14
  • 彻底删除Linux文件的方法汇总

    彻底删除Linux文件的方法汇总

    我们都知道Linux下如何删除系统文件,但是有时删的不彻底,要如何彻底删除文件呢?下面小编就给大家介绍下彻底删除Linux文件的方法,一起来学习下吧。...
    2021-04-09 08.04.49

发表评论

验证码: 看不清?点击更换

注:网友评论仅供其表达个人看法,并不代表本站立场。