2010-06-10 66 views
2

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

回答

1

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

但是,您不应单纯依靠文件大小进行完整性检查。改用md5_filesha1_file函数。

0

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

0

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

+0

与任何行结束可以被转移(作为二进制)到任何OS没有尺寸改变的文件。只有当“文本模式”用于转移时,才会出现结束问题。 – 2010-06-10 14:35:52

0

完成同样的另一个相当普遍的方式是创建文件的(MD5)哈希总和。但是,对于缺点,请阅读Is MD5 really that bad?

1

正如其他人所说 - 你需要检查的内容以及大小 - 它微不足道的文件已知的大小与空白。

然而,

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

根据您提供的文件到服务器的大小可能会有所不同,由于字符集转换 - 如Unix使用LF作为行结尾,但微软的操作系统默认使用CR + LF的CP/M行为(在更加深奥的操作系统上还存在其他一些怪诞现象 - 比如EBCDIC)。即在应用完整性检查之前,您可能应计划颠倒任何翻译流程。

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

HTH

C.