Что приводит к тому, что эти два идентичных файла имеют разные хэши?

435
Pedro A

Я не могу понять, почему следующие два файла дают разные хэши (SHA1, CRC32, SHA384 и т. Д.):

https://cdn.jsdelivr.net/npm/jsonify-error@1.2.1/dist/jsonify-error.js

https://cdn.jsdelivr.net/npm/jsonify-error@1.2.2/dist/jsonify-error.js

Пока я пробовал несколько утилит diff, но все они утверждают, что файлы идентичны.

Я загрузил оба файла и проверил их с помощью Sublime Text 3 и Visual Studio Code, оба из которых выглядят как UTF-8, CRLF, но как только я открываю первый и нажимаю на нем Ctrl + S (не меняя ничего!), Его хэш-изменения быть таким же, как второй.

Что здесь происходит?

РЕДАКТИРОВАТЬ, чтобы уточнить: я хочу знать, что отличается между файлами. Я знаю, что это что-то с пробельными символами или окончаниями строк, но что? Какая линия? Куда? Какой персонаж?

0

2 ответа на вопрос

2
Alex

Строка 1 в версии 1.2.1 завершилась как linux EOL, в то время как версия 1.2.2 на той же строке имеет конец строки windows.
(В качестве разделителя строк в Linux используется символ 0x0A, а в окнах - 0x0D, 0x0A)

То же самое со строками: 3, 4, 59, 60 и 61.

Инструмент, используемый для выявления проблемы - это WinMerge.

1
DrMoishe Pippik

Посмотрите в шестнадцатеричном редакторе: один файл использует 0x0a (LF), чтобы отметить конец строки, другой использует 0x0d0a (CR / LF). При необходимости используйте такой инструмент, как Notepad ++, чтобы изменить файлы на то же соглашение о переводе строки .

Hex view of 2 files

Что застало меня врасплох, так это то, что это не все строки, а всего лишь несколько, верно? Только строки 1, 3, 4, 59, 60 и 61 по какой-то странной причине (как показано в другом ответе) Pedro A 6 лет назад 0
Возможно, файлы были перемещены из одной ОС в другую и отредактированы там? DrMoishe Pippik 6 лет назад 0
Хммм. Возможно. Спасибо! Pedro A 6 лет назад 0

Похожие вопросы