# 检验软件的正确性

在网络上下载软件时,由于黑客无处不在,那么你这么保证你下载的文件是原版官方放出来的文件?这就需要通过 每个文件独特的指纹验证数据了

每个文件的内容与文件大小都不同,如果一个文件被修改之后,必然会有部分信息不一样,利用这个特性,可以使用 MD5/sha1 或更严密的 sha256 等指纹验证机制来判断该文件是否被更改过

# md5sum、sha1sum、sha256sum

目前有多重机制可以计算文件的指纹码,我们选择使用较为广泛的 MD5、SHA1、SHA256 加密机制来处理。

这里使用前一小节下载的 NPT 软件,来测试。在 NTP 下载页面上,提供了一个 md5 文件的下载,把这个对应版本的 md5 文件下载下来,里面就写着他的指纹码

mrcode:Downloads mrcode$ cat ntp-4.2.8p14.tar.gz.md5
MD5 (ntp-4.2.8p14.tar.gz) = 783edaf1d68ddf651bde64eda54a579d
1
2

如果如下的方式获取我们下载的 ntp 软件的指纹码,语法为

md5sum/sha1sum/sha256sum [-bct] filename
md5sum/sha1sum/sha256sum [--status|--warn] --check filename

-b:使用 binary 的读取方式,默认为 Windows/DOS 文件形态的读取方式
-c:检验文件指纹
-t:以文字形态来读取文件指纹
1
2
3
4
5
6
# 范例 1:获取刚刚 NTP 软件的指纹码
[root@study ~]# md5sum ntp-4.2.8p14.tar.gz 
783edaf1d68ddf651bde64eda54a579d  ntp-4.2.8p14.tar.gz
# 使用此指纹码对比刚刚官网下载下来的指纹码是否相同
1
2
3
4

你可以利用此特性将一些重要文件进行指纹数据库的建立,这样就能知道文件是否被修改过了

# 将多个文件生成指纹码,并写入文件中
[root@study ~]# md5sum /etc/group /etc/passwd >> data.md5
[root@study ~]# cat data.md5 
b75dbd8dc79305ad77c798ba1c9289e2  /etc/group
a60de527e76f0d5b31b0114098c8072a  /etc/passwd

# 校验指纹码是否匹配
[root@study ~]# md5sum -c data.md5                       
/etc/group: OK
/etc/passwd: OK
1
2
3
4
5
6
7
8
9
10