Значение контрольной суммы файла изменилось после долгого времени на неиспользованном диске

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

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

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

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

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

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

1 ответ

Решение

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

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

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


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

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

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

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

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

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

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

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

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

Другие вопросы по тегам