我们需要利用程序来从文件中生成校验和密钥,然后利用这个校验和密钥核实文件的完整性,一份文件可以通过网络或者任何存储介质分发到不同的地方,但是出于各种原因,数据可能在传输过程中丢失了部分,于是我们需要一些测试方式来确保时候的数据是否完整的,用于校验文件完整的方式称为校验和
我们用过原始文件和接收到的校验和码进行对比,来确认是否正确,如果正确,就是收到了正确的文件,不用重新发送正确文件
如何去获取到校验和码呢?
比较著名的是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