Вопрос или проблема
Существует ли встроенная утилита для проверки контрольной суммы/хеширования на Windows 7?
Есть встроенная утилита, как указано в этом другом ответе.
Тем не менее, вы можете использовать бесплатное приложение под названием HashTab, которое хорошо интегрируется с Проводником Windows, добавляя… ну, вкладку в диалоговое окно свойств файлов. Это довольно удобно.
CertUtil — это предустановленная утилита Windows, которую можно использовать для генерации хеш-контрольных сумм:
certUtil -hashfile путьКПроверяемомуФайлу [HashAlgorithm]
Выбор алгоритмов хеширования: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
Например, следующий пример генерирует MD5 контрольную сумму для файла C:\TEMP\MyDataFile.img
:
CertUtil -hashfile C:\TEMP\MyDataFile.img MD5
Чтобы получить вывод, аналогичный системам *Nix, вы можете добавить немного магии PowerShell:
$(CertUtil -hashfile C:\TEMP\MyDataFile.img MD5)[1] -replace " ",""
Я использую HashCheck (последняя версия), которая интегрируется как страница свойств для файлов и включает контекстное меню для сравнения с хеш-файлами (SFV).
Она бесплатная, и исходный код доступен.
Версия PowerShell 4 и выше включает командлет Get-FileHash.
powershell get-filehash -algorithm md5 <file_to_check>
Используйте doskey для создания постоянного псевдонима, который легче запомнить.
doskey sha1sum=powershell get-filehash -algorithm sha1 "$1"
doskey md5sum=powershell get-filehash -algorithm md5 "$1"
Существуют утилиты FCIV от Microsoft, Microsoft File Checksum Integrity Verifier (ссылка на скачивание).
Утилита Microsoft File Checksum Integrity Verifier является неподдерживаемой командной утилитой, которая вычисляет MD5 или SHA1 криптографические хеши для файлов.
Она не показывает Windows 7 в системных требованиях, но я только что использовал её на Windows 8, и она работала.
Новая версия 7-Zip также дает вам возможность получать контрольные суммы просто щелкнув правой кнопкой мыши (это не включает MD5). Она имеет SHA-1, SHA-256, CRC-32, CRC-64 и т. д.
Для MD5 вы можете скачать HashTab и проверить, щелкнув правой кнопкой мыши и выбрав свойства.
Вот один, который я использовал ранее, который гармонично интегрируется с диалогом «Свойства» Проводника: Summer Properties. Это открытый исходный код и также доступна x64 версия.
Мне также нравится FileAlyzer от Safer Networking, который предоставляет дополнительные функции. Но только для контрольных сумм Summer Properties — легковесен и выполняет свою работу.
Я добавляю это здесь только потому, что не видел ни одного полностью работающего примера PowerShell, готового для копирования и вставки:
C:\> powershell "Get-FileHash %systemroot%\system32\csrss.exe"
Алгоритм Хеш
——— —-
SHA256 CB41E9D0E8107AA9337DBD1C56F22461131AD0952A2472B4477E2649D16E…
C:\> powershell -c “(Get-FileHash -a MD5 ‘%systemroot%\system32\csrss.exe’).Hash”
B2D3F07F5E8A13AF988A8B3C0A800880
C:\> CertUtil -hashfile “%systemroot%\system32\csrss.exe” MD5 | findstr -v file
b2 d3 f0 7f 5e 8a 13 af 98 8a 8b 3c 0a 80 08 80
C:\>
Обновление 2019:
Вывод certutil
кажется изменился с Windows 8, так что мой старый фильтр для изоляции хеша больше не работает. Лишние пробелы также исчезли — меньше забот, когда пишешь скрипты. Вот новая демонстрация, которую можно копировать и вставлять:
C:\>CertUtil -hashfile "%systemroot%\system32\csrss.exe" | findstr -v ash
0300c7833bfba831b67f9291097655cb162263fd
C:\>CertUtil -hashfile “%systemroot%\system32\csrss.exe” SHA256 | findstr -v :
a37d616f86ae31c189a05b695571732073b9df97bf5a5c7a8ba73977ead3e65b
C:\>ver
Microsoft Windows [Версия 10.0.16299.1451]
C:\>
Чтобы сделать это более устойчивым к поломкам из-за очередного будущего изменения в certutil
, нам следует искать строки с не шестнадцатеричными символами для фильтрации: [^0-9a-zA-Z]
. Это также сделает его безопаснее для других локалей и языков.
C:\>CertUtil -hashfile "C:\windows\fonts\arial.ttf" | findstr -vrc:"[^0123-9aAb-Cd-EfF ]"
12c542ef8c99cf3895ad069d31843a5210857fdc
Почему такой регулярное выражение для анти-hex выглядит так странно? Смотрим этот вопрос, чтобы узнать, как диапазоны regex в findstr
не работают так, как должны. Я добавил дополнительный пробел для обратной совместимости со старыми версиями certutil
, но это необязательно.
Обратите внимание, что по умолчанию Get-FileHash
в PowerShell использует SHA256, в то время как certutil
по-прежнему по умолчанию использует SHA1. Так что указывайте свой алгоритм явно, где это необходимо. Вы можете быстро проверить доступные опции, сделав так:
C:\>powershell -c "Get-FileHash -?" | findstr gori
Get-FileHash [-Path] <string[]> [-Algorithm {SHA1 | SHA256 | SHA384 | SHA512 | MACTripleDES | MD5 | RIPEMD160}]
Get-FileHash -LiteralPath <string[]> [-Algorithm {SHA1 | SHA256 | SHA384 | SHA512 | MACTripleDES | MD5 |
Get-FileHash -InputStream <Stream> [-Algorithm {SHA1 | SHA256 | SHA384 | SHA512 | MACTripleDES | MD5 | RIPEMD160}]
C:\>certutil -hashfile -v /? | findstr gori
CertUtil [Options] -hashfile InFile [HashAlgorithm]
Алгоритмы хеширования: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
Nirsoft’s HashMyFiles – маленькая утилита, которая позволяет вычислять MD5 и SHA1 хеши для одного или нескольких файлов в вашей системе. Вы можете легко скопировать список MD5/SHA1 хешей в буфер обмена или сохранить их в текстовый/HTML/XML файл.
HashMyFiles также можно запускать из контекстного меню Проводника Windows и отображать MD5/SHA1 хеши выбранного файла или папки.
HashMyFiles – это бесплатное и портативное ПО.
Я нашел этот скрипт PowerShell:
param([switch]$csv, [switch]$recurse)
[Reflection.Assembly]::LoadWithPartialName("System.Security") | out-null
$sha1 = new-Object System.Security.Cryptography.SHA1Managed
$pathLength = (get-location).Path.Length + 1
$args | %{
if ($recurse) {
$files = get-childitem -recurse -include $_
}
else {
$files = get-childitem -include $_
}
if ($files.Count -gt 0) {
$files | %{
$filename = $_.FullName
$filenameDisplay = $filename.Substring($pathLength)
if ($csv) {
write-host -NoNewLine ($filenameDisplay + ",")
} else {
write-host $filenameDisplay
}
$file = [System.IO.File]::Open($filename, "open", "read")
$sha1.ComputeHash($file) | %{
write-host -NoNewLine $_.ToString("x2")
}
$file.Dispose()
write-host
if ($csv -eq $false) {
write-host
}
}
}
}
Источник: Вычисление SHA1 в PowerShell
Он использует .NET, который я предполагаю, установлен у вас.
Microsoft File Checksum Integrity Verifier. Он может вычислять MD5 и SHA-1 хеш-значения.
Скачайте, извлеките файлы, затем откройте командную строку, перейдите к извлеченному пути и введите следующую команду:
fciv -md5 filepath\filename.extension
Например:
fciv -md5 d:\programs\setup.exe
Пакетный файл на основе комментария pbarney к ответу с наибольшим количеством голосов: Этот файл копирует MD5 хеш любого файла, перетаскиваемого на пакетный файл, в буфер обмена:
@ECHO OFF
FOR /f "tokens=*" %%i IN ('@certutil -hashfile %1 MD5 ^| find /v "hash of file" ^| find /v "CertUtil"') DO SET r=%%i
SET r=%r: =%
ECHO %r% | clip
Чтобы сделать это элементом контекстного меню вместо этого:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Get MD5]
@="Копировать MD5 в буфер обмена"
[HKEY_CLASSES_ROOT\*\shell\Get MD5\command]
@="\"C:\\<ПУТЬ К БАТ ФАЙЛУ>\\getMD5.bat\" \"%1\""
К сожалению, не то, о чем я знаю, но пакет Sysinternals от Microsoft включает хороший инструмент под названием sigcheck.
Cygwin содержит утилиту md5sum.exe
, которая должна сделать то, что вам нужно.
MD5 Context Menu делает именно это. Он добавляетMD5 опцию в контекстное меню файлов:
MD5 Context Menu – это бесплатное расширение для оболочки Windows, которое отображает хеш-сумму MD5 выбранного файла.
Он сообщает, что совместим с Windows 95, 98, ME, NT, 2000 и XP, хотя он прекрасно работает у меня на Windows 7. Это небольшой загрузочный файл (238 КБ) и включает все необходимое.
Это просто скрипт командного оболочки, который использует ответ tedr2, но удаляет лишние строки вывода и пробелы:
:: hash.cmd : Получить хеш файла
:: p1: файл, который нужно хешировать
:: p2: Алгоритм хеширования в ЗАГЛАВНЫХ БУКВАХ
:: p3: Выходной файл
@setlocal
@for /f "tokens=*" %%a in (
'@certutil -hashfile %1 %2 ^|find /v "hash of file" ^|find /v "CertUtil"'
) do @(
@set str=%%a
)
@set str=%str: =%
@echo %str%
@endlocal
Вывод можно перенаправить в файл, если это необходимо:
@echo %str% > %3
например.
sys> \dev\cmd\hash.cmd MyApp.dll SHA1
8ae6ac1e90ccee52cee5c8bf5c2445d6a92c0d4f
QuickHash поддерживает SHA-256 и SHA-512. Мне нужна поддержка SHA-256 для проверки контрольной суммы белых списков библиотек JavaScript для включения в дополнение Firefox.
Правильный ответ, конечно, да, CertUtil (см. ответ tedr2).
Но я добавлю бесплатную программу File Checksum Verifier от Penteract, которая, я думаю, является одной из самых удобных для пользователя программ. (Отказ от ответственности: я связан с Penteract.)
Некоторые из его преимуществ:
- Сравнивает вычисленные и ожидаемые хеши за вас.
- Минималистичный – нет элемента в контекстных меню файлов, нет дополнительной вкладки в свойствах файлов.
Чтобы проверить целостность этой программы (от атак man-in-the-middle) – она загружается через защищенное соединение.
Кроме того: бесплатно, офлайн (так что вам не нужно загружать ваши файлы), удобный для пользователя (перетащите файл и получите результат), запускается из меню «Пуск» (не нужно искать загруженный исполняемый файл, когда вы хотите использовать его через год) и поддерживает MD5, SHA1, SHA256 и т. д.
1. checksum
Я использую checksum командную утилиту.
- Открытый исходный код,
- Поддержка
md5
,sha1
,sha256
иsha512
.
Использование:
checksum [-t=sha1|sha256|sha512|md5] [-c=signature] [-f=]filepath
2. Аргументы командной строки
-?
,--help
,-h
Выводит опции.-f
,--file=VALUE
Имя файла.-t
,--type
,--hashtype=VALUE
Тип хеша. По умолчаниюmd5
.-c
,--check=VALUE
Необязательный: проверьте – подпись, которую вы хотите проверить. Без учета регистра.
3. Примеры использования
# Проверить md5 для файла "E:\Саша Неотразима\Sasha-Irresistible.exe"
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe"
342B45537C9F472B93A4A0C5997A6F52
# Проверить sha256
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe" -t=sha256
F6286F50925C6CBF6CBDC7B9582BFF833D0808C04283DE98062404A359E2ECC4
# Верно ли 41474147414741474147 sha256 хеш?
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe" -t=sha256 -c 41474147414741474147
Ошибка - хеши не совпадают. Фактическое значение было 'F6286F50925C6CBF6CBDC7B9582BFF833D0808C04283DE98062404A359E2ECC4'
# Еще одна попытка
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe" -t=sha256 -c F6286F50925C6CBF6CBDC7B9582BFF833D0808C04283DE98062404A359E2ECC4
Хеши совпадают..
Что-то вроде этого: winmd5sum.
Это тоже неплохо: sendtoMD5 – щелкните правой кнопкой мыши, отправить в… и получите результат.
HashTab 3.0 – это бесплатное расширение оболочки, которое вычисляет множество контрольных сумм, включая MD5.
Он интегрируется как новая вкладка в свойствах файла.
Вы можете использовать MD5sums для Windows, загрузка всего 28 КБ (Cygwin может быть излишним, если все, что вам нужно, это вычислить хеши MD5).
Самый простой способ использования – это использовать Проводник, чтобы перетащить файлы на md5sums.exe, чтобы получить их MD5 хеши.
OpenHashTab имеет открытый исходный код, интегрируется с Проводником и активно разрабатывается.
Это хорошая альтернатива HashCheck, так как тот больше не поддерживается (более 6 лет).
Это не встроенная утилита, но это очень хороший вариант
https://checksumcompare.sanktuaire.com
Вы можете сравнивать контрольные суммы по файлам и/или сводкам, если две папки различаются или идентичны.
Вы можете попробовать msys2, он здесь.
Просто введите (алгоритм)sum. (алгоритм) – это хеш-алгоритм, который вы хотите использовать, например, md5, sha1, sha256.
В отличие от Cygwin, этот инструмент портативен, вы просто загружаете .zip файл и распаковываете его в любое место, где вам удобно. Вы можете использовать его простым щелчком (msys2.exe).
Ну, я сделал программу для вычисления некоторых хешей из файла. Я надеюсь, что это поможет вам.
Что это делает?
Он вычисляет хеш SHA-1, хеш SHA-384, хеш MD5 и хеш SHA-256. Ну, похоже, на этом и все 🙂
Если у вас нет времени проверять вывод от certutil
символ за символом <размер хеша>
количество раз, перекачивайте на find
утилиту, чтобы увидеть, совпадает ли контрольная сумма:
certutil -hashfile ekaf_elbatuc.exe sha256 | find "<контрольная сумма>" && echo Файл в порядке. || echo Некоторые мыши или крысы были здесь
Но тогда в чем смысл получать хеш с того же сервера, что и файл?
Проверено в Win 10 CMD
Таким образом, я вычисляю контрольные суммы из Проводника, не используя стороннее программное обеспечение.
На Windows 10 (и, вероятно, предыдущих версиях) выполните следующие действия:
Используя проводник, откройте папку «Отправить» , набрав это в адресную строку
shell:sendto
Создайте пакетный файл в этой папке с именем что-то вроде Calculate SHA1 and MD5.cmd
и добавьте этот текст
@echo off
certUtil -hashfile %1 SHA1
certUtil -hashfile %1 MD5
pause
Теперь вы сможете вычислить контрольные суммы SHA1 и MD5 для любого файла из Проводника, просто щелкнув правой кнопкой мыши файл и выбрав отправить к Calculate SHA1 and MD5.cmd
Разумеется, вы можете изменить имя вышеуказанного файла и добавить другие контрольные суммы или даже создать несколько файлов, каждый из которых будет иметь другой тип хеша.
У меня есть другой пакетный файл, названный Calculate SHA256.cmd, который я предпочитаю использовать отдельно (вы не захотите вычислять каждый тип хеша из одного пакетного файла, так как на это уйдет слишком много времени для очень больших файлов).
Некоторые дополнительные примечания
Просто чтобы сделать вывод немного менее загроможденным, я предпочитаю пропускать вывод через findstr.
certUtil -hashfile %1 SHA256 | findstr ^1
Инструкция pause в конце пакетного файла необходима, иначе окно закроется немедленно.
Существует около 100 сторонних инструментов на рынке. Я использую MD5Hash. Для загрузок с sfv файлами просто воспользуйтесь TeraCopy, чтобы проверить хеши.
Чтобы получить решение, работающее на Windows или практически любой другой среде, используйте Python.
-
установите Python — инсталлятор Windows предоставляется на https://www.python.org/downloads/
-
скачайте протестированную реализацию
cksum
, например, http://pastebin.com/raw.php?i=cKATyGLb — сохраните содержимое этого вc:\cksum.py
или где вам удобнее
Затем для выполнения контрольной суммы:
python c:\cksum.py INPUTFILE
Не так быстро, как скомпилированная утилита, но совместима с Unix cksum
и работает везде.
Ответ или решение
Да, в Windows 7 существует несколько встроенных утилит для вычисления контрольных сумм (хэш-значений), которые могут быть использованы для проверки целостности файлов.
1. CertUtil
Одним из наиболее известных инструментов является утилита CertUtil
. Это встроенная команда, которая может быть использована для генерации контрольных сумм различных алгоритмов. Для использования этой утилиты, необходимо открыть командную строку (cmd) и выполнить команду следующего формата:
certUtil -hashfile [путь_к_файлу] [АлгоритмХэширования]
Доступные алгоритмы: MD5, SHA1, SHA256, SHA384, SHA512. Например, чтобы получить MD5-сумму для файла C:\TEMP\MyDataFile.img
, можно использовать следующую команду:
CertUtil -hashfile C:\TEMP\MyDataFile.img MD5
2. PowerShell
Если вы используете PowerShell (версия 4.0 и выше), то движение в сторону получения контрольных сумм также стало проще благодаря возможности команды Get-FileHash
. Запрос контрольной суммы файла может выглядеть следующим образом:
Get-FileHash -Path "<путь_к_файлу>" -Algorithm MD5
Это также позволяет выбрать различные алгоритмы, такие как SHA1, SHA256 и другие.
3. FCIV
Также существует утилита от Microsoft под названием File Checksum Integrity Verifier (FCIV), которая может создавать хэш-значения MD5 и SHA1. Несмотря на то, что данный инструмент не предустановлен в Windows 7, его можно скачать и использовать. Для этого нужно загрузить и установить утилиту, а затем использовать её в командной строке.
Пример команды для получения MD5-хэша:
fciv -md5 "C:\путь_к_файлу"
4. Сторонние утилиты
Кроме встроенных инструментов, рекомендуется обратить внимание на несколько полезных сторонних приложений, которые могут быть установлены для более простого доступа к функциям генерации контрольных сумм:
- HashTab — интегрируется с проводником Windows и добавляет вкладку в свойствах файлов для отображения хэш-значений.
- HashCheck — предоставляет функционал в виде контекстного меню, который позволяет сравнивать файлы с контрольными значениями.
- 7-Zip — имеет встроенные ребята, которые позволяют получать контрольные суммы для различных алгоритмов прямо из контекстного меню.
Заключение
В целом, Windows 7 предоставляет пользователям достаточно инструментов для работы с контрольными суммами. Используя встроенные утилиты, такие как CertUtil и PowerShell, а также сторонние программы для улучшения функциональности, можно обеспечить целостность файлов и защитить себя от потенциальных проблем с повреждением данных.