原理:对文件进行MD5 Hash,求出文件的MD5哈希值,通过下载后文件MD5哈希值和发布者提供的MD5哈希值是否一致来判断文件是否在发布者发布之后被篡改过。
说明:寿命老长的一个Hash算法,适用范围广,网站存储密码也经常使用。不同的文件产生的MD5哈希值是唯一的,但这点已经有办法通过对文件进行少量的修改,让文件的MD5后的哈希值保持一致。
使用:在CentOS下,要对文件进行MD5 Hash是很简单的,一个 md5sum命令即可:
你是文件的发布者线sum把文件的哈希值发送给验证者,这样下载你文件的人就可以通过MD5哈希值来验证你的文件正确性。反过来,我们在网站上下载文件之后,同时可以获取发布者的MD5哈希值和本地生成的Hash值对比,如果一致,认为文件是正确的。
原理: 原理同MD5一样,都是通过对文件进行HASH求值,比对文件发布者发布的HASH值,通过是否相等判断文件是否被篡改
这个SHA1和MD5基本一致,需要补充说明下的是,在使用 md5sum 也好,还是 sha1sum 也罢,校验文件的时候,务必要让系统能够根据文件中提供的路径找到文件,如果文件找不到,是没有办法进行校验的。
如果是做多个文件的Hash校验,可以通过一个文件保存多个文件的Hash值即可。
哈希游戏
原理:使用非对称加密,程序生成唯一的密钥对(公钥和私钥:Public Key和Private Key/Secret Key)。操作方法如下:
1.发布者通过用生成的密钥对中的私钥对要发布的文件进行签名linux游戏,得到签名文件(sign);
说明:签名算法中,密钥的用处分别是:公钥用于加密信息和验证,私钥用于解密和签名。私钥掌握在信息发布方,公钥可以任意分发。信息发布方用密钥进行对信息进行签名,接收方在获取公钥后,可以用公钥对发布方发布的信息+签名进行验证。如果验证失败则认为信息被篡改。在网络中,我们经常碰到的HTTPS协议,使用了同样的机制。
# 说明同上# 由于过程相对复杂,并且在实际使用中,校验用的比较多,因此这里只介绍文件的校验过程。# 在获得文件和签名时,我们先用gpg校验签名,此时文件必须存在 $ gpg --verify downloaded-file-sign.asc
这里有多种情况,如果你只有签名,但生成签名的文件不存在时(系统没找到,一般应该放在同目录下面),返回的是:
当你有文件的时候linux查看进程,但还没有与签名对应的公钥时,gpg返回的信息类似下面:
注意:上面的信息在不同的文件和操作系统上生成的信息是不同的。但在没有公钥的时候,你可以发现gpg提供了一个该签名对应的钥匙号:47ACDAFB,这个是我们需要找的公钥。
上面已经说过,发布者已经将公钥发布到公钥服务器中,供验证者下载,因此我们需要到公钥服务器中下载公钥,要下载公钥,钥匙号就很重要了。
可用的公钥服务器可以通过wikipedia 上的Key Server条目来查看常用的一些key服务器列表。这里使用hkp://:
–recv-keys要与–keyserver配合使用,导入密钥对的公钥之后,我们就能够使用这个公钥来验证我们的签名了。
再次运行我们之前的验证命令(gpg –verify sign-file),就可以看到验证的结果了。
但注意消息里面有个警告,说明这个是未受信任的签名认证。因为这个公钥谁都可以发布上去的,如果你确实需要进一步认证linux中如何下载文件,可以在签名认证之前,你能还要联系下真正的发布者,确认这个密钥的信息——指纹!这个是这个算法的一个弱点。
本文依据CC-BY-NC-SA 3.0协议发布,竭诚为读者提供Linux视频教程、Linux学习资料以及红帽考试资料等优质学习资源。
《Linux就该这么学》公布后受到了超乎意料的强烈关注,文章也被读者们无数次的考核着。
我们承诺为每位linux技术爱好者提供最优质的linux教程、最纯净的linux系统以及最贴心的红帽linux考试指导。
正如Linux系统因开源精神而强壮,如果您热爱Linux技术并且愿意奉献自己的学识,认同本书的宗旨与较强的团队精神请加入我们。