Я хотел бы рассчитать контрольную сумму MD5 для некоторого контента. Как мне сделать это в PowerShell?
powershell
powershell-2.0
Luke101
источник
источник
Ответы:
Если содержимое является строкой:
Если содержимое файла:
Начиная с PowerShell версии 4, это легко сделать для файлов из коробки с помощью
Get-FileHash
командлета:Это, безусловно, предпочтительнее, поскольку позволяет избежать проблем, которые предлагает первое решение, как указано в комментариях (использует поток, закрывает его и поддерживает большие файлы).
источник
Exception calling "ReadAllBytes" with "1" argument(s): "The file is too long. This operation is currently limited to supporting files less than 2 gigabytes in size."
Как новичок в Powershell, работающий в Linux, я очень недоволен борьбой, которую я испытываю, получая сумму md5, которая была бы простоmd5sum file.ext
в Linux.$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)))
это дает вам низкое использование памяти и не ограничивает 2 ГБ .$stream = [System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
то$hash = [System.BitConverter]::ToString($md5.ComputeHash($stream))
тогда$stream.Close()
Если вы используете PowerShell Community Extensions, есть командлет Get-Hash, который сделает это легко:
источник
Get-FileHash
в vanilla PowerShell 4.0. Видео TechNet .Вот две строки, просто измените «привет» в строке № 2:
источник
Вот функция, которую я использую, которая обрабатывает относительные и абсолютные пути:
Спасибо @davor выше за предложение использовать Open () вместо ReadAllBytes () и @ jpmc26 за предложение использовать блок finally.
источник
Dispose
Вызов должен быть вfinally
блоке.Еще одна встроенная команда, которая долгое время была установлена в Windows по умолчанию начиная с 2003 года, - это Certutil , которая, конечно же, также может вызываться из PowerShell.
(Предостережение: MD5 должен быть во всех заглавных буквах для максимальной надежности)
источник
FipsAlgorithmPolicy
включен.Есть много примеров онлайн с использованием ComputeHash (). Мои тесты показали, что это было очень медленно при работе через сетевое соединение. Ниже приведен фрагмент кода, который работает намного быстрее, однако ваш пробег может отличаться:
источник
write-progress
линии? Подсветка синтаксиса, кажется, не нравится.На этом сайте есть пример: Использование Powershell для контрольных сумм MD5 . Он использует платформу .NET для создания экземпляра алгоритма хеширования MD5 для вычисления хеша.
Вот код из статьи, включающий комментарий Стивена:
источник
Как указано в принятом ответе,
Get-FileHash
его легко использовать с файлами, но его также можно использовать со строками:источник
Теперь есть функция Get-FileHash, которая очень удобна.
Просто измени
SHA384
наMD5
.Пример взят из официальной документации PowerShell 5.1 . В документации есть больше примеров.
источник
Это становится однострочным, если вы загружаете File Checksum Integrity Verifier (FCIV) от Microsoft.
Я скачал FCIV отсюда: Доступность и описание утилиты File Checksum Integrity Verifier
Запустите следующую команду. У меня было десять файлов для проверки.
источник
PowerShell One-Liners (строка в хэш)
MD5
SHA1
SHA256
SHA384
SHA512
источник
Это вернет хеш MD5 для файла на удаленном компьютере:
источник
Пример для опции меню правой кнопкой мыши также:
источник
Вот прекрасный пример печати, пытающийся проверить отпечаток SHA256. Я скачал gpg4win v3.0.3 с помощью PowerShell v4 (требуется
Get-FileHash
).Загрузите пакет с https://www.gpg4win.org/download.html , откройте PowerShell, возьмите хеш со страницы загрузки и запустите:
Вывод:
источник
Вот пример однострочной команды с вычислением правильной контрольной суммы файла , как вы только что скачали, и сравнивает ее с опубликованной контрольной суммой оригинала.
Например, я написал пример для загрузки из проекта Apache JMeter . В этом случае у вас есть:
Затем с помощью этой команды PowerShell вы можете проверить целостность загруженного файла:
Вывод:
Объяснение:
Первый операнд
-eq
оператора является результатом вычисления контрольной суммы для файла:Вторым операндом является опубликованное значение контрольной суммы. Сначала мы получаем содержимое файла file.md5, представляющего собой одну строку, а затем извлекаем значение хеш-функции на основе формата строки:
И файл, и файл.md5 должны находиться в одной папке для работы этой команды.
источник
Это то, что я использую для получения согласованного значения хэша:
источник
Вот фрагмент, который я использую, чтобы получить MD5 для данной строки:
источник