我们需要利用程序来从文件中生成校验和密钥,然后利用这个校验和密钥核实文件的完整性,一份文件可以通过网络或者任何存储介质分发到不同的地方,但是出于各种原因,数据可能在传输过程中丢失了部分,于是我们需要一些测试方式来确保时候的数据是否完整的,用于校验文件完整的方式称为校验和

我们用过原始文件和接收到的校验和码进行对比,来确认是否正确,如果正确,就是收到了正确的文件,不用重新发送正确文件

如何去获取到校验和码呢?

比较著名的是md5sum和sha1sum,对文件内容使用hash算法获取校验和

常用命令如下

md5sum filename

可以获取到对应的md5字符串

我们可以利用这个命令,获取到一个MD5的文件

来核实数据的完整性

md5sum filename > file_sum.md5

那么利用md5sum进行文件校验的时候,方法如下

md5sum file1 file2 file3…

这样会导致多行的输出,

md5sum *.sh

60245d05a496d87a6b5473714eb52464  1password.sh

0a314f01760131559a7297787d8921f2  1test.sh

d4d7d1c8639a822f3579004fee4b6c01  debug1.sh

c034171852b03c3a109b1521dad07718  debug.sh

fa771fc852069db9ebd70e0200442c1d  if.sh

3774944300192cd1058e636705db7467  password.sh

f2daf06ad3a28a839553c5f53a72c421  sleep.sh

c7d295a37c67dfbdababb0f64dca3ab8  speactor.sh

88a069a93872f62fcd7aa03b8d78ae93  testVar.sh

0f97c6c05fbdc65fb3bc99e036361ae4  until.sh

对于需要进行校验完整的方式可以使用如下的方式

md5sum -c file_sum.md5

如果需要进行对应的文件检测,可以使用

md5sum *.md5

和md5 sum类似,SHA1是另一种常见的校验和算法,用给定的输入文件生成一个长度为40个字符的十六进制字符串,计算SAH1串的命令,使用起来和MD5基本一致,只需要替换下对应命令到SAH1,使用SAH1串的命令是 sha1sum,然后对应的输入文件名改为 .md5 改为了 .sha1

对于多个文件的一致性校验

使用 md5deep或者sha1deep的命令可以保证进行目录级别的计算

deep的命令使用如下

md5deep -rl path > directory.md5

-r使用递归的方式

-l使用相对路径,默认情况下,md5deep会输出文件的绝对路径

或者和find来结合递归的进行递归计算校验和

find directory_path -type f -print 0 | xargs -0 md5sum >> directory.md5

使用如下的命令来进行校验

md5sum -c directory.md5

发表评论

邮箱地址不会被公开。 必填项已用*标注