Содержание
Хэш или контрольная сумма файла — короткое уникальное значение, вычисляемое из содержимого файла и обычно использующееся для проверки целостности и соответствия (совпадения) файлов при загрузке, особенно если речь идет о больших файлах (образы системы и подобные), которые могут быть скачены с ошибками или есть подозрения о том, что файл был подменен вредоносным ПО.
На сайтах загрузок часто бывает представлена контрольная сумма, вычисленная по алгоритмам MD5, SHA256 и другим, позволяющая сверить загруженный файл с файлом, выложенным разработчиком. Для вычисления контрольных сумм файлов можно использовать сторонние программы, но есть способ сделать это и стандартными средствами Windows 10, 8 и Windows 7 (требуется версия PowerShell 4.0 и выше) — с помощью PowerShell или командной строки, что и будет продемонстрировано в инструкции.
Получение контрольной суммы файла средствами Windows
Для начала потребуется запустить Windows PowerShell: проще всего использовать поиск в панели задач Windows 10 или меню Пуск Windows 7 для этого.
Команда, позволяющая вычислить хэш для файла в PowerShell — Get-FileHash, а чтобы использовать ее для вычисления контрольной суммы достаточно ввести ее со следующими параметрами (в примере вычисляется хэш для образа ISO Windows 10 из папки VM на диске C):
Get-FileHash C:VMWin10_1607_Russian_x64.iso| Format-List
При использовании команды в таком виде, хэш вычисляется по алгоритму SHA256, но поддерживаются и другие варианты, задать которые можно с помощью параметра -Algorithm, например, для вычисления контрольной суммы MD5 команда будет выглядеть как в примере ниже
Get-FileHash C:VMWin10_1607_Russian_x64.iso -Algorithm MD5 | Format-List
При этом поддерживаются следующие значение для алгоритмов вычисления контрольной суммы в Windows PowerShell
- SHA256 (по умолчанию)
- MD5
- SHA1
- SHA384
- SHA512
- MACTripleDES
- RIPEMD160
Подробное описание синтаксиса команды Get-FileHash доступно также на официальном сайте https://technet.microsoft.com/en-us/library/dn520872(v=wps.650).aspx
Получение хэша файла в командной строке с помощью CertUtil
В Windows присутствует встроенная утилита CertUtil для работы с сертификатами, которая, помимо прочего, умеет высчитывать контрольную сумму файлов по алгоритмам:
- MD2, MD4, MD5
- SHA1, SHA256, SHA384, SHA512
Для использования утилиты достаточно запустить командную строку Windows 10, 8 или Windows 7 и ввести команду в формате:
certutil -hashfile путь_к_файлу алгоритм
Пример получения хэша MD5 для файла показан на скриншоте ниже.
Дополнительно: на случай, если вам требуются сторонние программы для вычисления хэшей файлов в Windows, можно обратить внимание на SlavaSoft HashCalc.
Если же требуется вычислить контрольную сумму в Windows XP или в Windows 7 без PowerShell 4 (и возможности его установить), вы можете использовать утилиту командной строки Microsoft File Checksum Integrity Verifier, доступную для загрузки на официальном сайте https://www.microsoft.com/en-us/download/details.aspx?id=11533 (формат команды для использования утилиты: fciv.exe путь_к_файлу — результат будет MD5. Также можно вычислить хэш SHA1: fciv.exe -sha1 путь_к_файлу)
Доброго времени суток! Как часто вы проверяете скачиваемые файлы на равенство хеш-сумм? Я — никогда. Но сегодня я почему-то решил порвать с этой порочной практикой и сделать свою жизнь более безопасной. Согласитесь, основная причина не сравнивать хеш-сумму файла — это лень. Нужно искать какую-нибудь программу, запускать ее, натравливать на файл, и это просто уйма действий. Как можно упростить эту процедуру? Я не придумал ничего лучше, чем добавить в контекстное меню файла опцию «Посчитать хеш». Интересующимся предлагаю краткую инструкцию.
1. Установка программы
Берем отсюда File Checksum Integrity Verifier utility — консольную утилиту для вычисления и сравнения хешей MD5 и SHA-1 от Microsoft. Там же можно прочитать, что это за зверь и с чем его едят. Скачанный файл Windows-KB841290-x86-ENU.exe можно открыть как zip архив и увидеть, что он содержит два файла: собственно fciv.exe и ReadMe.txt, содержащий справку к утилите. Файл ReadMe нас не интересует, а fciv.exe нужно поместить в одну из директорий, прописанных в переменной PATH, дабы вызывать ее из командной строки без указания полного пути. Я поместил в system32. Проверить, что утилита работает, можно, натравив ее из командной строки на любой файл:fciv -md5 C:test.dat
— для вычисления MD5 fciv -sha1 C:test.dat
— для вычисления SHA-1
2. Создание элемента контекстного меню
Для расширения контекстного меню файлов нужно будет немного подшаманить в реестре. Запускаем regedit.exe, идем в HKEY_CLASSES_ROOT* — это раздел, отвечающий за контекстное меню всех типов файлов. В разделе shell создаем подраздел с любым именем (у меня это fciv_md5). В параметре по умолчанию прописываем желаемое название пункта меню (напрмер, Compute MD5). У созданного подраздела (fciv_md5) создаем еще один подраздел с именем command, и у него в параметре по умолчанию прописываем магическую строчку:cmd.exe /k fciv -md5 "%1"
Строка предписывает запустить cmd.exe с командой fciv -md5 "%1"
и отобразить результат. Для добавления пункта для вычисления SHA-1 проделываем ту же последовательность действий, меняя лишь названия. Команда в этом случае выглядит так:cmd.exe /k fciv -sha1 "%1"
Должно получиться что-то вроде этого: Все вышеперечисленное одним файлом:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT*shellfciv_md5] @="Compute MD5" [HKEY_CLASSES_ROOT*shellfciv_md5command] @="cmd.exe /k fciv -md5 "%1"" [HKEY_CLASSES_ROOT*shellfciv_sha] @="Compute SHA" [HKEY_CLASSES_ROOT*shellfciv_shacommand] @="cmd.exe /k fciv -sha1 "%1""
3. Вычисляем SHA-1 хеш двумя кликами мыши:
Раз: Два: Всем добра и совпадающих хешей! UPD. Как подсказывает в первом комментарии, можно обойтись без установки FCIV и использовать встроенную утилиту CertUtil. В таком случае п.1 становится неактуальным, а команда в regedit меняется на: для MD5: cmd.exe /k CertUtil -hashfile "%1" MD5
для SHA1: cmd.exe /k CertUtil -hashfile "%1" SHA1,
и, кроме того, появляется возможность вычислять SHA256 хеш: cmd.exe /k CertUtil -hashfile "%1" SHA256
6117,3k 61стащено с ITFound.ruЕсли у вас возникла задача узнать хеш-сумму файла, а устанавливать какие-либо дополнительные программы для этого не хочется, то это можно сделать стандартными средствами с помощью командной строки.Нам поможет утилита CertUtil по умолчанию входящая в комплект WindowsЧтобы узнать хеш сумму файла необходимо зайти в командную строку: (клавиши Win+R и набираем cmd, либо «Пуск-Все программы-Стандартные-Командная строка«) и выполнить команду certutil -hashfile c:fileгде, c:file — путь до файлаПо умолчанию утилита считает хеш-сумму с помощью SHA1Если хотите использовать другой, пожалуйста, доступны MD5 MD4 MD2 SHA512 SHA384 SHA256 SHA1Например:Certutil -hashfile c:file MD5 Также можно воспользоваться утилитой FCIV (File Checksum Integrity Verifier utility) эта утилита может не входить по умолчанию в систему. Скачать можно ее с оф.сайта http://support.microsoft.com/ru-ru/kb/841290Распаковываем и кладем файл fciv.exe для удобства в папку C:windowssystem32Теперь можно выполнив командуfciv c:fileузнать хеш-сумму файла, по умолчанию MD5, но также доступен SHA1fciv -sha1 c:fileИз полезных функций хочется отметить возможность проверить автоматом хеш-суммы всех файлов в папке, а также загрузить их в XML-файл для последующей сверкиСчитаем хеш-сумму всех файлов в папкеfciv c:folderСоздаем файл d:hashes.xml, который содержит хеши и пути до файлов всех файлов папки d:Folderfciv -add d:Folder -r -xml d:hashes.xmlСверяем хеш суммы файлов по ранее созданному xml файлуfciv -v -xml d:hashes.xmlИспользуемые источники:
- https://remontka.pro/get-file-hash-windows-powershell/
- https://m.habr.com/ru/post/224303/
- https://meduzian.livejournal.com/40379.html