Как я могу сгенерировать сумму 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}

Ссылка: https://en.wikiversity.org/wiki/PowerShell/Loops

Вы можете получить эквивалент вашей команды Unix (без сортировки) с помощью следующего:

for /R . %f in (*.*) do @certutil -hashfile "%f" MD5

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

Расширение оболочки HashCheck (архив) можно использовать для получения хэша каталога. Это можно сделать:

  1. Использование HashCheck в каталоге.
  2. Это создаст .md5 файл, который содержит список хэшей каждого файла в этом каталоге, включая все файлы в подкаталогах.
  3. Снова используйте HashCheck на .md5 файл, созданный выше.
  4. Этот финал сгенерировал .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 может хешировать очень большие каталоги или файлы.

Другие вопросы по тегам