Filesize检查完整性检查

时间:2010-06-10 13:38:58

标签: php

嘿我想要对将分发给许多不同类型服务器的软件进行完整性检查。我可以安全地使用PHP的filesize()比较...例如,我的服务器上的745文件大小是否会在所有其他服务器上为745?

5 个答案:

答案 0 :(得分:1)

是的,除非它是一个文本文件,其行结尾已被转换。

但是,您不应仅依靠文件大小进行完整性检查。请改用md5_filesha1_file功能。

答案 1 :(得分:1)

正如其他人所说 - 你需要检查内容和大小 - 将文件填充到具有空格的已知大小是微不足道的。

然而,

  

将分发给许多不同类型服务器的软件

根据您将文件传送到服务器的方式,由于字符集转换,大小可能会有所不同 - 例如Unix使用LF作为行尾,但Microsoft的操作系统默认使用CR + LF的CP / M行为(在更深奥的操作系统上还有其他奇怪的东西 - 例如EBCDIC)。也就是说,在应用完整性检查之前,您应该计划撤销任何翻译流程。

或者,不是将指纹引用到其他服务器,而是在部署到目标系统时捕获一组文件指纹,并使用未存储在目标上的密钥对其进行加密(即每次输入时都键入的密钥)想检查指纹)然后将其与代码一起存储。

HTH

下进行。

答案 2 :(得分:0)

是。但是,这不是检查完整性的可靠方法。我至少会添加一个CRC。像SHA-256这样强大的哈希函数会更好。无论如何,您可以使用hash_file

答案 3 :(得分:0)

文件大小可能不同,因为各种操作系统上的行结尾不同。在Windows上,行结尾是CRLF,在Linux LF上,在Mac上(包括OS X)它是CR。就个人而言,我只是将所有源代码放入存档,计算校验和(sha1或md5)并在网站上发布,因此下载程序包的人可以自行检查程序包的有效性。

答案 4 :(得分:0)

另一种相当流行的方法是创建文件的(MD5)哈希值。但是,请阅读Is MD5 really that bad?以获取利弊。