1

У меня есть накопитель с сохраненными данными, которые я не использовал уже 3 года и более. Затем я проверил много файлов с контрольной суммой corz.

Теперь я копирую эти старые данные на другой диск, и, чтобы быть в безопасности, я запустил chkdsk с полным сканированием секторов, и он пришел без проблем.

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

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

Контрольные суммы

Что может вызвать это? И почему тест и извлечение не возвращают ошибку?

В zip-файле хранится только один элемент, и я на 100% уверен, что не изменил его после контрольной суммы. Может кто-нибудь объяснить это или помочь найти причину?

1 ответ1

0

Почему тест и извлечение не возвращают ошибку?

Потому что zip-файл, безусловно, в порядке. Zip-формат использует CRC-32 для обнаружения повреждений, и очень маловероятно, чтобы случайно измененный файл прошел этот тест.

По этой причине я думаю, что это старая контрольная сумма, что не так. Это было ошибочно рассчитано несколько лет назад.


Что может вызвать это?

Возможно, вы столкнулись с ошибкой программного обеспечения. Подумайте, могут быть ошибки, которые проявляются только в определенных обстоятельствах. С другой стороны, вычисление контрольной суммы относительно просто. Мы не можем исключить это, но я бы предпочел обвинить что-то еще.

Космический луч. Или что-то еще, что сделало один бит в вашей оперативной памяти, изменить его состояние. Это был не последний бит контрольной суммы, так как две контрольные суммы различаются по многим битам. Я думаю, что немного перевернулся до или во время расчета, несколько операций были выполнены позже, и это единственное изменение повлияло на весь результат. Я вижу md5 на вашем скриншоте, думаю, ваша контрольная сумма - MD5. Это хеш-функция; такие функции специально создаются (то есть определяются, выбираются) таким образом, что при переключении одного бита в заданную входную половину (в среднем) выходных битов также происходит изменение. Бит, который перевернулся, возможно, не был входным битом, это мог быть некоторый прерывистый бит; Тем не менее, неудивительно, что две суммы очень разные.

Я упомянул космические лучи, но также возможно, что ваша память не была надежной на 100% и слегка перевернута без внешней причины.

Эти вещи случаются. Несколько примеров:

  1. Этот автор пишет об исполняемом файле, который начал генерировать ошибки. Оказалось, что файл в кеше (RAM) буквально немного отличается от того же файла на диске.

  2. Использование ошибок памяти для атаки на виртуальную машину. Авторы Sudhakar Govindavajhala и Andrew W. Appel.

    Наша атака работает, посылая в JVM [Java Virtual Machine] Java-программу, которая разработана таким образом, что практически любая ошибка памяти в ее адресном пространстве позволяет ей контролировать JVM. Все обычные виртуальные машины Java и .NET уязвимы для этой атаки.

  3. Артем Динабург зарегистрировал доменные имена, несколько отличающиеся от разных популярных доменов. Устройства со всего мира посетили эти адреса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .