2010-06-10 5 views
2

Эй, я хочу проверить целостность программного обеспечения, которое будет распространено на разных серверах разных типов. Могу ли я безопасно использовать сопоставления файлов filesize() ... например, будет ли размер файла 745 на моем сервере равен 745 на всех других серверах?Проверки целостности для проверки целостности

ответ

1

Да, если это не текстовый файл, окончание которого было преобразовано.

Однако для проверки целостности вам не следует полагаться только на размер файла. Вместо этого используйте функции md5_file или sha1_file.

0

Да. Однако это не является надежным способом проверки целостности. Я бы, по крайней мере, добавил CRC. Сильная хеш-функция, такая как SHA-256, была бы лучше. Независимо от того, вы можете использовать hash_file.

0

Размер файла может отличаться, потому что окончание строк различно для разных ОС. В конце строки Windows есть CRLF, на Linux LF, на Mac (включая OS X) это CR. Лично я бы просто поместил весь источник в архив, вычислил контрольную сумму (sha1 или md5) и опубликовал ее на веб-сайте, поэтому пользователи, загружающие пакет, могут проверить правильность самого пакета.

+0

Файл с любыми символами конца строки могут быть переданы (в виде двоичных) в любой операционной системе без изменения размера. Только когда «текстовый режим» используется для передачи, возникают проблемы с окончанием строки. –

0

Другим разумно популярным способом достижения этого было создание хэш-суммы (MD5) вашего файла. Однако, прочитайте Is MD5 really that bad? для cons.

1

Как уже говорили другие, вам необходимо проверить содержимое, а также размер - его тривиально, чтобы проложить файл до известного размера с пробелом.

Однако

программное обеспечение, которое будет распространяться на многих различных типов серверов

В зависимости от того, как загрузить файлы на сервер размер может отличаться в зависимости от заданных преобразований символов - например Unix использует LF как конец строки, но операционные системы Microsoft по умолчанию используют поведение CP/M при использовании CR + LF (есть другие странности для более эзотерических операционных систем, таких как EBCDIC). то есть вам следует, вероятно, планировать отмену любого процесса перевода, прежде чем применять проверку целостности.

В качестве альтернативы вместо ссылки на отпечатки пальцев на другой сервер вы можете захватить набор отпечатков пальцев файла при развертывании в целевой системе и зашифровать его с помощью ключа, не сохраненного на целевой (то есть, который вы вводите каждый раз вы хотите проверить отпечатки пальцев), затем сохраните это вместе с кодом.

НТН

С.

Смежные вопросы