В КУРСЕ?

Разбираемся в теме

Python для защиты файлов: что показывает проверка SHA-256

Полезное первое упражнение по компьютерной безопасности — заметить изменение собственного файла. Для этого можно сравнивать его криптографическую контрольную сумму с ранее сохранённой. Python предоставляет средства для такой проверки в стандартной библиотеке. Однако строка хеша отвечает на узкий вопрос о данных и не превращает неизвестный файл в безопасный.

Сравнивайте содержимое, а не название

Хеш-функция получает последовательность байтов и вычисляет значение фиксированной длины. SHA-256 даёт 256-битный результат; в шестнадцатеричной записи это 64 символа. Для одних и тех же входных байтов алгоритм возвращает один и тот же результат. Изменение содержимого обычно приводит к совершенно другой строке. Представим два файла с названием plan.txt в разных папках. В первом записано «встреча в среду», во втором — «встреча в пятницу». Одинаковое имя не делает их содержимое одинаковым. И наоборот, переименование файла без изменения его байтов не меняет хеш, вычисленный только по содержимому. Поэтому в журнале проверки отдельно сохраняют путь, алгоритм и полученное значение: это разные сведения.

Зафиксируйте одинаковые условия чтения

В Python модуль hashlib позволяет создать объект SHA-256, передавать ему байты через update и получать шестнадцатеричную строку методом hexdigest. Файл для побайтовой проверки открывают в бинарном режиме. Большой файл можно читать частями: последовательные вызовы update учитывают объединённое содержимое в том же порядке. В собственном учебном скрипте разделите три действия: чтение файла, вычисление значения и сравнение с эталоном. Ошибка чтения должна давать понятное сообщение, а не результат «совпало». Для первого опыта выберите небольшой неподвижный файл. Если другой процесс меняет его во время чтения, итог проверки становится сложнее интерпретировать. Перенос строки, кодировка и невидимый пробел тоже относятся к байтам; визуально похожие тексты могут различаться.

Не расширяйте вывод за пределы проверки

Несовпадение с надёжным эталоном означает, что проверяемые данные не совпали с ожидаемыми. Причиной может быть обычное редактирование, ошибка копирования или нежелательное изменение. Сам хеш не рассказывает, кто изменил файл и почему. Совпадение SHA-256 даёт сильное практическое свидетельство совпадения данных, но не является проверкой на вредоносность. Особенно важно происхождение эталона. Если неизвестный отправитель прислал файл вместе с его хешем, оба могли быть подготовлены одним человеком. Их согласованность не подтверждает доверие к отправителю. Например, Марина сохраняет контрольную сумму своей утверждённой инструкции отдельно от рабочей копии. После редактирования сравнение помогает заметить расхождение версий. Если же она перезаписывает эталон при каждом запуске, прежняя точка сравнения исчезает и задача контроля изменений не решается.

Попробуйте на практике

Составьте и проверьте план локального опыта с собственным небольшим текстовым файлом.

  1. Создайте файл с вымышленной заметкой и запишите его точный путь. Выберите SHA-256 и сохраните первоначальный результат отдельно, используя собственный локальный скрипт на hashlib.
  2. Повторите вычисление без редактирования. Запишите, совпали ли значения, и убедитесь, что сравниваете полные строки одного алгоритма.
  3. Измените одно слово, сохраните файл и вычислите значение снова. Зафиксируйте различие, не заменяя первоначальный эталон.
  4. Переименуйте изменённый файл и повторите вычисление по новому пути. Сравните его с результатом предыдущего шага и объясните, почему название и содержимое проверяются отдельно.

Как проверить результат. Без изменения байтов результаты совпадают; после изменения слова ожидается другой хеш; простое переименование сохраняет хеш содержимого. В выводе должны быть указаны условия опыта и граница результата: проверка обнаруживает расхождение данных, но не устанавливает автора изменения и безопасность файла.

Частые вопросы

Можно ли восстановить потерянный файл по его хешу?

Нет. Контрольная сумма не является резервной копией и не хранит содержимое в обратимо закодированном виде. Для восстановления нужна отдельная копия данных.

Хеширование заменяет защиту доступа?

Нет. Оно само по себе не запрещает чтение, изменение или удаление файла. Сохранность эталона, права доступа и резервное копирование решают другие задачи и требуют отдельного подхода.

Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.

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

Зарегистрироваться
← К списку материалов