Как я могу сгенерировать сумму MD5 для папки в Windows?
Существует несколько сообщений о создании сумм MD5 для файлов и / или папок на различных платформах Windows. Однако ни один из них не работал для меня. Я старался:
- Windows CertUtil:
CertUtil -hashfile myFileName MD5
возвращает "Доступ запрещен" для всех папок (мойcmd
работает с правами администратора), - HashTab: не отображается в диалоге свойств в проводнике, как рекламируется,
- Летние свойства: не отображаются в диалоге свойств,
- HashCheck: не позволяет MD5 для папок, только файлы,
- md5checker: не вычисляет MD5 всей папки (только файлы в ней).
В этот момент я начинаю немного отчаяться. Обратите внимание, что я использую Windows 7 x64.
Для информации, если возможно, я пытаюсь найти инструмент, который позволил бы что-то подобное в Linux:
find DIR -type f -exec md5sum {} \; | sort -k 2 | md5sum
8 ответов
Ни один из них не сделал того, что мне было нужно, поэтому я придумал эту альтернативу...
@echo off
for /R . %%f in (*.*) do (
echo | set/p="%%f - "
certutil -hashfile "%%f" MD5 | findstr /V ":"
)
Выводит в формате "<Путь><Имя файла> - <Хеш>" по одной строке на файл.
Если вы хотите использовать графический интерфейс, я могу порекомендовать Fsum Frontend.
Fsum Frontend - это бесплатный и простой в использовании инструмент, который позволяет вычислять дайджесты сообщений, контрольные суммы и HMAC для файлов и текстовых строк. Он поддерживает перетаскивание, и вы можете обрабатывать несколько файлов одновременно. Созданная контрольная сумма может быть использована для проверки целостности файлов.
Поддерживает 96 алгоритмов: [...] md5 [...]
Как следует из названия, Fsum Frontend является графическим интерфейсом для (среди прочего) SlavaSoft fsum.
Быстрая и удобная утилита командной строки для проверки целостности файла. Он предлагает выбор из 13 самых популярных хеш-функций и контрольных сумм для дайджеста файловых сообщений и вычисления контрольной суммы.
Его функции включают в себя:
- Возможность действоватьрекурсивно. FSUM может работать не только с файлами из определенного каталога, но и с файлами из всех подкаталогов указанного каталога;
- Работа сфайлами большого размера. (Проверено на файлах размером до 15 ГБ);
- Полнаясовместимость с утилитойmd5sum
PowerShell предоставляет оператор цикла, некоторые люди могут предпочесть этот синтаксис
foreach($f in dir){ certutil -hashfile "$f" md5}
Вы можете получить эквивалент вашей команды Unix (без сортировки) с помощью следующего:
for /R . %f in (*.*) do @certutil -hashfile "%f" MD5
Вы можете изменить точку (.
) для любой папки, из которой вы хотите создать рекурсию, и *.*
к любой маске файла, которая вам нужна, чтобы сузить набор файлов.
Расширение оболочки HashCheck (архив) можно использовать для получения хэша каталога. Это можно сделать:
- Использование HashCheck в каталоге.
- Это создаст
.md5
файл, который содержит список хэшей каждого файла в этом каталоге, включая все файлы в подкаталогах. - Снова используйте HashCheck на
.md5
файл, созданный выше. - Этот финал сгенерировал
.md5
файл содержит хеш всего каталога.
Поздно к вопросу, но я нашел только непринятые ответы, вот что я нашел:
function Get-FolderHash ($folder) {
dir $folder -Recurse | ?{!$_.psiscontainer} | %{[Byte[]]$contents += [System.IO.File]::ReadAllBytes($_.fullname)}
$hasher = [System.Security.Cryptography.SHA1]::Create()
[string]::Join("",$($hasher.ComputeHash($contents) | %{"{0:x2}" -f $_}))
}
Скопируйте и вставьте этот код в консоль PowerShell и введите:
Get-FolderHash "C:\CustomFolder"
Время выполнения может варьироваться в зависимости от содержимого папки.
Если у вас установлен Python 3, вы можете использовать для этого мой пакет pyfstools. Быстрое использование:
$ pip install git+https://github.com/sorgloomer/pyfstools.git@main
...
$ python -m pyfstools hash --algo md5 .
dir 88c17b149c1d9fef50f642b698cef9e6
Я написал кроссплатформенный пакет CLI для получения хеша файла или каталога.
Он используетblake3
криптографический алгоритм.
paq может хешировать очень большие каталоги или файлы.