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

Для чего нужна контрольная сумма файла – алгоритмы расчета хэша

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

Формирование контрольной суммы файла

Чтобы создать контрольную сумму, следует запустить специальную программу, которая вычислит её, используя соответствующий алгоритм. Типичные алгоритмы, используемые для этого, включают MD5, SHA-1, SHA-256 и SHA-512.

Алгоритм использует криптографическую хеш-функцию, которая принимает входные данные и создает строку (последовательность чисел и букв) фиксированной длины. Входной файл может быть небольшим, например, на 1 МБ, или массивным файлом размером 4 ГБ, но, в любом случае, вы получите контрольную сумму одной длины.

Небольшие изменения в файле дают очень разные контрольные суммы. Например, мы создали два разных текстовых файла, которые почти одинаковы, но второй имеет дополнительный восклицательный знак.

После запуска встроенной утилиты расчета контрольных сумм Windows 10 мы увидели очень разные контрольные суммы. Различие в одном знаке базового файла даёт совершенно другую контрольную сумму.

Когда контрольные суммы полезны

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

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

Компьютеры используют «метод контрольной суммы» для проверки данных в фоновом режиме, но вы также можете сделать это сами. Например, для дистрибутивов Linux часто указывают контрольные суммы, поэтому вы можете проверить корректность загрузки ISO-образа, прежде чем записывать его на диск или помещать на USB-накопитель. Вы также можете использовать контрольные суммы для проверки целостности любого другого типа файлов, от приложений до документов и носителей. Вам просто нужно знать контрольную сумму исходного файла.

В чем разница между MD5, SHA-1 и SHA-256

Контрольные суммы – это полезный способ убедиться, что файл не имеет ошибки. Если случайная ошибка возникает из-за проблем с загрузкой или проблем с жестким диском, итоговая контрольная сумма будет отличаться, даже если это всего лишь «одна небольшая ошибка».

Однако, эти криптографические хэш-функции не идеальны. Исследователи безопасности обнаружили «изъяны» в функциях MD5 и SHA-1. Они обнаружили два разных файла, которые дают один и тот же результат для хэша MD5 или SHA-1, но отличаются друг от друга.

Это вряд ли произойдёт случайно, но злоумышленник может использовать эту технику для маскировки вредоносного файла. Вот почему вы не стоит полагаться на суммы MD5 или SHA-1 при проверке аутентичности файла.

Пока ещё не было сообщений о компрометации SHA-256, поэтому приложения теперь создают суммы SHA-256 вместо сумм MD5 и сумм SHA-1. SHA-256 – более сильный, более безопасный алгоритм.

Различные алгоритмы контрольной суммы дают разные результаты. Файл будет иметь разные контрольные суммы MD5, SHA-1 и SHA-256. Если вы знаете только сумму MD5 исходного файла, вы должны вычислить хэш MD5 вашей копии, чтобы проверить, соответствует ли она оригиналу.

Как рассчитать контрольные суммы

Если вы знаете контрольную сумму исходного файла и хотите проверить его на своем ПК, – это сделать очень просто. Windows, macOS и Linux имеют встроенные утилиты для генерации контрольных сумм. Вам не нужны сторонние приложения.

В Windows команда Get-FileHash в PowerShell вычисляет контрольную сумму файла. Чтобы использовать её, сначала откройте PowerShell. В Windows 10 щелкните правой кнопкой мыши кнопку «Пуск» и выберите «Windows PowerShell». Вы также можете запустить его, выполнив поиск в меню «Пуск» для «PowerShell» и щелкнув ярлык «Windows PowerShell».

В командной строке введите Get-FileHash, а затем нажмите клавишу пробела.

Введите путь к файлу, для которого вы хотите вычислить контрольную сумму. Или, чтобы упростить задачу, перетащите файл из окна Проводника в окно PowerShell, чтобы автоматически заполнить путь.

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

Если вам нужен другой тип контрольной суммы, добавьте соответствующий параметр -Algorithm в конец команды, например:

Get-FileHash C:\path\to\file.iso -Algorithm MD5

Get-FileHash C:\path\to\file.iso -Algorithm SHA1

Сравните вычисленную контрольную сумму с исходной. Вам не нужно сверять все цифры, так как в контрольной сумме будет значительная разница, даже если в базовом файле будет изменение только в одном символе.

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

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

Во время копирования информации или передачи ее по сети не гарантируется ее целостность, что особенно актуально для больших объемов информации. Представьте себе, что вы скачивали из интернета установочный файл размером 900 мегабайт, как убедиться, что он загрузился полностью и без ошибок. Ведь если в нем есть ошибки, то программа может просто не установиться или во время ее работы будут возникать сбои.

Конечно можно сравнить размер полученного файла с исходным, но этого не достаточно, чтобы утверждать об идентичности двух файлов. Поэтому были разработаны специальные алгоритмы позволяющие решить эту задачу.

Мы не будем углубляться в техническую реализацию, достаточно знать, что применяя определенный алгоритм высчитывает некое значение однозначно описывающее данный файл. Оно всегда одинаковое для одних и тех же данных и называется контрольной суммой или хешем. Хотя самих алгоритмов хеширования существует множество, вот некоторые из наиболее часто встречающихся: MD5, CRC32, SHA-1, SHA256, BTIH.

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

Проверка контрольных сумм файлов в Windows

В операционной системе Windows существует множество способов выполнить данную проверку, поэтому рассмотрим только несколько из них, а вы уже сами выберите наиболее удобный вам.

Проверка хеша файла в командной строке Windows

Начнем с самого простого способа не требующего установки дополнительного программного обеспечения. Начиная с Windows 7 есть возможность рассчитать контрольную сумму в командной строке используя встроенную утилиту certutil среди прочего умеющую вычислять хеш файлов. Просто запускаете командную строку и вводите следующую команду:

где [HashAlgorithm] может принимать одно из следующих значений: MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512. Таким образом, чтобы узнать контрольную сумму файла Win10_1511_1_Russian_x32.iso расположенного в корне диска D:\ по алгоритму SHA-1 команда будет выглядеть так:

Результатом выполнения команды будет строка содержащая хэш-код в виде шестнадцатеричных чисел. Кстати, чтобы не вводить путь до файла руками, можно воспользоваться хитростью. Результат вычислений выделен красным. Осталось сравнить его с оригинальным, для этого удобно вставить их рядом в блокноте. Причем если использовать продвинутый блокнот типа Notepad++, то и сверять визуально не придется, если хеши будут одинаковы, то они подсветятся.

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

Проверка хеша в программе MD5 File Checker

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

Через некоторое время программа выдаст вердикт. Основной минус программы, что она умеет использовать только алгоритм MD5, что иногда бывает недостаточно. Скачать MD5 File Checker можно здесь.

Расчет контрольных сумм в программе HashTab

Здесь уже используется немного другой подход, причем есть версия как для Windows так и для Mac OS. В Windows программа является расширением проводника, а на Mac является плагином для Finder. Покажем работу программы на примере Windows.

Если после установки программы HashTab щелкнуть правой кнопкой мыши по проверяемому файлу и выбрать в контекстном меню «Свойства», то мы обнаружим новую вкладку «Хеш-суммы файлов» и одновременно запустится расчет контрольных сумм этого файла.

Причем программа умеет вычислять хеш по множеству алгоритмов, а какой будет использоваться, можно выбрать, щелкнув «Настройки». Так же есть возможность указать оригинальную контрольную сумму, если хеши совпадут, то появится зеленая галочка. Скачать HashTab и узнать последние новости можно с сайта программы.

Представленных вариантов вполне достаточно, для проверки целостности файлов в Windows. Единственное пожалуй упомянем, что Total Commander так же умеет вычислять CRC-суммы, соответствующие возможности находятся в меню «Файл».

Проверка хешей в Linux

Здесь так же можно воспользоваться консолью. В случае алгоритма MD5 достаточно выполнив команду.

Для хеш-сумм по алгоритму SHA-1 команда выглядит немного иначе.

В случае необходимости рассчитать циклическую контрольную сумму (CRC) используется команда

Кто не хочет связываться с консолью, может поставить программу Gtkhash с графическим интерфейсом и проверять целостность файлов в ней. Для установки программы выполнить в консоли:

Напоследок расскажем о том, как можно убедиться, что скачанный с торрента или доставшейся из другого ненадежного источника дистрибутив Windows оригинальный и его не изменял кто-либо. Для этого идем на сайт Майкрософт где подписчики MSDN могут скачивать ее продукты. Находим нужный нам образ, обращая внимание на версию, дату, разрядность и язык. Когда нужный продукт будет найден, нажимаем на «Сведения» рядом с ним.

В нижней части раскрывшейся области будет указана хеш сумма рассчитанная по алгоритму SHA1. Не смотрите на название вашего файла, его могли переименовать, главное это содержимое. Кроме того не стоит тратить время на проверки контрольных сумм образа, если это сборка, репак и подобное народное творчество, а не образ MSDN.

Что такое контрольная сумма файла и с чем ее едят

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

Что это?

Контрольная сумма (или хеш-сумма) — это результат работы специальных алгоритмов. Подробнее о них вы можете почитать хоть в Википедии, если интересно (алгоритм MD5, кстати, уже упоминался мной в статье про пароли). Мы же обсудим лишь практический аспект их применения. Результат этот выглядит как строка символов, которую и можно увидеть рядом со ссылкой на тот или иной файл. Ну а приписки MD5 и SHA1 как раз и означают алгоритм, с помощью которого контрольная сумма была получена.

Вот, например, контрольная сумма дистрибутива Windows 8, который нашелся у меня на жестком диске, которую выдает алгоритм SHA1:

И зачем оно нужно?

Контрольная сумма позволит вам проконтролировать подлинность и целостность скачиваемых (да и любых других) файлов. Контрольные суммы имеют одну приятную особенность — если вы скачали файл не полностью, если он был изменен или если это вообще другой файл, контрольная сумма изменится. То есть, если мы скачиваем откуда-либо файл, и около него написана контрольная сумма, то скачав его, мы можем проверить, скачан ли он полностью и вообще тот ли это файл? Для этого надо получить контрольную сумму скачанного файла и сравнить с той, что была указана на сайте. Если контрольные суммы совпадают — все в порядке. Если отличаются — вы скачали файл не полностью или это вообще не тот файл…

Как узнать контрольную сумму?

Средствами проводника Windows, к сожалению, узнать контрольную сумму MD5 или SHA1 невозможно. Однако существует целый ряд утилит различной сложности, которые позволяют это сделать. Мне больше всего нравится HashTab (ссылка на сайт программы) . Программка совсем небольшая, и ставится как дополнение к проводнику. После установки HashTab, для того, чтобы узнать контрольные суммы файла, просто щелкните по нему правой кнопкой мыши, и выберите «Свойства». Обратите внимание, что в привычном нам окне проводника появилась новая вкладка — «Хеш-суммы файлов». Для больших файлов может потребоваться некоторое время на подсчет сумм.

Обратите внимание, что здесь же есть окошко для сравнения суммы. На скриншоте ниже программа рапортует, что суммы совпадают.

Поиск файлов по контрольным суммам

Есть еще одна небольшая хитрость, связанная с контрольными суммами. Зная контрольную сумму можно не только удостоверится в подлинности и целостности файла, но и найти его. Да-да, если у вас нет самого файла, но вы знаете его контрольную сумму — просто вбейте ее в поисковик, и вы очень быстро найдете именно тот файл, который нужно.

На сриншоте ниже я ввел в Google контрольную сумму OEM-дистрибутива Windows 8.1, как видите, результат на лицо.

Контрольная сумма файла. Что это?

А вы, слышали о контрольной сумме файла? Этот термин очень часто встречается на просторах сети и все постоянно зачем-то ее рассчитывают. В этой статье мы разберемся что же это такое и определим, какую пользу можно извлечь, работая с контрольными суммами.

Что такое контрольная сумма файла?

Контрольная сумма (часто называют «хеш») — предназначена для контроля целостности передаваемых данных и представляет собой некое значение, которое было рассчитано при помощи специальных алгоритмов. Среди алгоритмов, которые чаще всего применяются, есть CRC32, MD5 и SHA-1.

CRC32 — переводится как циклический избыточный код, он применим для архиваторов.

MD5 — очень распространенный алгоритм, у которого есть множество применений. Его можно использовать даже для идентификации файлов. Это удобно при поиске идентичных документов и файлов, достаточно только сравнивать одинаковые контрольные суммы.

SHA-1 — с помощью него проверяют целостность данных во время загрузки через торренты.

  • Контрольная сумма — это сумма, выводимая в результате работы одного из известных алгоритмов (избыточный код). Любые данные, которые передаются цифровым способом, отправляются фрагментами и нередки случаи, когда эти фрагменты теряются по дороге. Хеш предназначен для проверки целостности данных и выявления поврежденных фрагментов.
  • Специальный алгоритм рассчитывает сумму полученного файла, если она совпадает с контрольной суммой оригинала, значит передача прошла успешно. Если файл (или его фрагмент) имеет отличающийся, от оригинального, хеш, то появляется ошибка контрольной суммы. Она гласит о нарушении целостности файла. Сейчас мы немного заглянем в теорию возникновения ошибок подобного рода.
  • Самое интересное, что такая ошибка может возникнуть задолго до передачи данных. Например, при записи со сменного носителя (флешки, диска), файл уже может некорректно записаться и его хеш будет отличаться от оригинала. Причины этому могут быть разными.
  • При попытке открыть такой файл, начать установку, или воспроизвести его может и ничего не произойти, а могут начаться и серьезные глюки. Мало кому понравится, если в середине игры окажется серьезная ошибка, которая не позволит пройти ее до конца.
  • А еще, несоответствие контрольной суммы может говорить о том, что файл не оригинальный, или в нем выполнялись определенные действия. К примеру, могли прицепить компьютерный вирус. Что тоже не сильно приятно.

Почему возникает ошибка контрольной суммы?

Давайте немножко углубимся в тему. Многим известно, из курса школьной физики, что вокруг любого проводника, через который течет электрический ток, образуется магнитное поле. Если такой проводник намотать на катушку, получится достаточно сильный магнит. Но при обычных условиях, это поле незаметно, по крайней мере для человека. Любой проводник, по соседству, сразу же воспринимает это поле и в нем образуются побочные токи. Это называется помехами. Производители разными способами пытаются снизить их влияние, но они практически всегда присутствуют.

А теперь возьмем любой компьютер, в котором и так места нет, так еще и куча проводов плотно набито. Если даже хозяин пк их красиво уложил, то это никак не улучшает ситуацию. По ним текут разные токи, с разными потенциалами и разным направлением. Одни предназначены для питания, другие передают информацию. В этой коробочке, под названием компьютер, просто хаос невидимых магнитных полей. И все они мешают друг другу, постоянно создают помехи.

Эта ситуация может показаться фантастической, но такова реальность любой электроники. И самое интересное, что эти помехи считываются системой как реальные сигналы, распознаются и записываются к передаваемому файлу. Чтобы снизить вероятность постоянных наводок, лучше всего размещать все провода как можно дальше друг от друга.

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

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

Но этого нельзя сказать о старых операционных системах. Если вам приходится использовать старенький DOS, ошибка может доставить немножко проблем. Как правило, причина связанна с тем, что система выполняет сброс скорости обмена данных с производительного режима DMA, на очень непроизводительный PIO. Это режим не отличается большой скоростью и не поддерживает работу с контрольными суммами. Исходя из этого, целостность данных не контролируется.

Можно проверить, какой ражим используется для передачи данных с оптических дисков. Откройте меню «Пуск» и выберите «Панель управления». В следующем окне, откройте раздел «Система» и перейдите в «Диспетчер устройств», выберите «Первичный канал IDE», нажмите на «Свойства» и в окне свойств, откройте вкладку «Дополнительные параметры».

Все параметры должны выглядеть следующим образом:

Режим передачи обязательно должен иметь параметр «DMA, если доступно». Если этот режим никак не выставляется, то следует задуматься о покупке нового привода.

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

Чтобы узнать и проверить контрольную сумму нужного файла, используют специальные утилиты. Сейчас мы рассмотрим самые проверенные из них.

HashTab — программа для проверки контрольная сумма файла

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

Скачать данную утилиту можно на сайте разработчиков: hashtab.ru На этом ресурсе, нажимаем на ссылку «Скачать для Winodws» и сохраняем файл установки на свой компьютер. Запускаем скачанный файл и производим установку программы.

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

Например, так выглядят контрольные суммы для файла Microsoft Office Word, с расширением docx.

Чтобы проверять эти суммы на соответствие, ниже находятся специальное поле. В него необходимо вставить оригинальный хеш и нажать на кнопку «Сравнить файл».

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

В случае несовпадения хеша, нужно заново скачать данный файл и повторить эту проверку. На этой же вкладке можно настроить вычисление контрольной суммы. Нажмите на ссылку «Настройки».

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

Проверяем хэш файла с помощью утилиты MD5 FileChecker

Есть еще одна полезная программа, которая может помочь проверить контрольные суммы MD5. Отличительной чертой данной утилиты, является возможность работы без установки. Загрузить ее можно здесь:

После загрузки можете сразу же запустить.

Нажмите на кнопку «Обзор…» и выберите файл для проверки. Далее нажимаете на «Рассчитать» и через некоторое время (пока программа вычисляет сумму) появится полученное значение MD5 для данного файла.

Теперь, чуть ниже, в соответствующее поле, вставляем контрольную сумму алгоритма MD5 и делаем клик по кнопке «Проверить». Если все Ок, то появится сообщение о совпадении сумм и о том, что файл не поврежден.

Если это не так, то появится сообщение следующего вида.

Так что смело устанавливаем игру или программу на свой компьютер только в том случае, если фактическая сумма совпадает с контрольной

Теперь вы разобрались что такое контрольная сумма и узнали для чего она предназначена. И вы можете извлечь пользу вычисления подобных сумм, определяя целостность скачанных данных. В этом помогут упомянутые, в данной статье, программы HashTab и MD5 FileChecker. Плюс первой, ее способность работать разными типами алгоритмов, для вычисления хеша. Но зато вторая, хоть и работает только с MD5, но зато способна запускаться без установки на компьютер. Это плюс, если вы не хотите слишком засорять свою систему множеством программ.