Как следует из заголовка, когда я загружаю файл (в моем случае зашифрованный jar) через FTP на мой сервер (работающий под управлением Ubuntu 20.04) и пытаюсь загрузить его, некоторые байты jar, похоже, изменяются (а также относительная контрольная сумма sha).
Кто-нибудь знает, почему это происходит и как это «исправить»?
Данные исходного файла:
Подробности загруженного файла:
Исходные байты файла:
Байты загруженного файла:
Обновлять: по-видимому, это происходит только если я загружаю файл с расширением jar. Я попробовал переименовать файл из "Test_original.jar" в "Test_original" (без расширения) и загрузить, sha256 такой же, как у моего файла на рабочем столе.
Обновление ч.2: Судя по всему, на сервере копия совпадает с оригиналом, поэтому я предполагаю, что что-то пошло не так во время загрузки / обработки файла сервером при поступлении запроса на загрузку (?)
решение1
Скорее всего, вы использовали машину с Windows и забыли воспользоваться binary
опцией FTP.
Поскольку Windows использует другие окончания строк ( \r\n
), чем остальной мир, по умолчанию все \n
, что не начинается с a, преобразуется \r
в a \r\n
. Это имеет ограниченный смысл для текстовых файлов, но разрушительно для двоичных файлов.
Как этого избежать, зависит от используемого вами FTP-клиента: для клиента командной строки просто введите binary
после входа в систему, для клиента с графическим интерфейсом найдите соответствующий параметр конфигурации.