Иногда нужно проверить целостность и правильность файла, например, скаченного из Интернета. Часто производитель файла публикует
хэш-сумму (результат работы
хэш-функции), а пользователь может ее проверить с помощью сторонних утилит, чтобы убедиться, что файл не поврежден или не был подвергнут зловредным изменениям злоумышленником, например, заражению вирусом, внедрению вредоносного кода.
Windows 7 и выше
В Windows 7 присутствует стандартная утилита certutil, предназначенная для работы с сертификатами и хранилищами сертификатов, но она умеет вычислять и хэш-суммы файлов.
certutil -hashfile <путь_до_файла>
По умолчанию утилита генерирует хэш
SHA1 Чтобы сгенерировать хэш-сумму по другому алгоритму, нужно вызвать утилиту так:
certutil -hashfile <путь_до_файла> <алгоритм>
где <алгоритм> - один из поддерживаемых алгоритмов (регистр символов в названии алгоритма значения не имеет)
Поддерживаемые алгоритмы:
- MD2
- MD4
- MD5
- SHA1
- SHA256
- SHA384
- SHA512
Например, чтобы получить
MD5-хэш надо вызвать утилиту со следующими параметрами:
certutil -hashfile <путь_до_файла> MD5
Проще всего наделать батников для каждого (или нужных) алгоритмов, да положить их в один из PATH-каталогов, например, для получения MD5-хэша можно создать MD5.BAT со следующим кодом:
@certutil -hashfile %1 MD5
Впрочем, я для вас заморочился.
Тут можно взять батник для каждого алгоритма, или
скачать SFX-архив для самых ленивых. Распакуется в директорию Windows.
Улучшаем BAT-файлы
Вообще, оригинальный вывод содержит много лишнего, утилита выводит лишнюю строку, сообщая о том, что обрабатывает указанный файл, потом выводит хэш, где каждый байт хэш-суммы через пробел, а потом еще и уведомляет нас, что операция успешно завершена (нет, бля, мы не заметили):
N:\BatTest\win7\simple>certutil -hashfile MD5.BAT MD5
MD5 хеш файла MD5.BAT:
9b e2 27 09 ed 09 0a 23 9e 55 52 6b 44 04 a5 33
CertUtil: -hashfile - команда успешно выполнена.
Делаем так, чтобы батник отображал только строку с хэшем и без всяких пробелов.
1. Поскольку, язык BAT/CMD беден на операции со строками, нам придется скачать стороннюю, заимствованную из Linux утилиту awk, и добавить специальную команду, чтоб утилита оставила нам только вторую строку в выводе:
certutil -hashfile MD5.BAT MD5 | awk NR==2
b9 cb 1e 4b 57 f7 77 dd 67 ee a1 61 2e c4 32 20
Скачать утилиту awk для Windows можно здесь.
2. Удалить пробелы можно тоже с помощью awk:
awk "{ gsub(/ /,//); print }"
Весь батник целиком:
@certutil -hashfile %1 MD5|awk NR==2|awk "{ gsub(/ /,//); print }"
Вывод:
N:\BatTest\win7\ one-hash>MD5.bat MD5.bat
b310116e1fa1241e916717515212c1a01f116913e147144
Готовые .BAT-файлы на GitHubSFX-архив (распаковывается в директорию Windows, awk в комплекте) Windows XP и выше
В Windows XP утилиты certutil нет, потому придется пользоваться сторонними программами. Их множество, но, например, можно воспользоваться утилитой hash.exe
Она поддерживает хэш-суммы:
- MD5
- SHA1
- SHA256
- SHA512
Параметры запуска:
hash.exe <алгоритм> <путь_до_файла>
Например:
Hash.exe md5 Hash.exe
выдаст MD5-хэш самой hash.exe:
Hash.exe 126399821fc56f045cef5af1d09e832b
Утилита использует библиотеки OpenSSL (DLL есть в комплекте) для получения хэш-функций.
Внимание! Утилита дубовая от слова ой, Древние! Внутреннего хелпа у нее нет, на любые ошибки (нет параметров, параметры перепутаны местами, файл недоступен) она просто выдаст пустую строку в выводе.
Опять же, наделал батников (
на GitHub)
И SFX-архив для ленивых (hash.exe и DLL в комплекте) Это репост с сайта
http://tolik-punkoff.comОригинал:
https://tolik-punkoff.com/2022/06/09/windows-cmd-bat-poluchit-md5-i-drugie-hesh-summy-dlya-fajlov/(
![](http://lj.rossia.org/numreplies/hex_laden/549408)
Comments |
Comment on this)