Get-FileHash
Вычисляет хэш-значение файла с помощью указанного хэш-алгоритма.
Синтаксис
Get-FileHash
[-Path] <String[]>
[[-Algorithm] <String>]
[<CommonParameters>]
Get-FileHash
[-LiteralPath] <String[]>
[[-Algorithm] <String>]
[<CommonParameters>]
Get-FileHash
[-InputStream] <Stream>
[[-Algorithm] <String>]
[<CommonParameters>]
Описание
Командлет Get-FileHash
вычисляет хэш-значение файла с помощью указанного хэш-алгоритма.
Хэш-значение — это уникальное значение, соответствующее содержимому файла. Вместо идентификации содержимого файла по имени файла, расширению или другому назначению хэш назначает уникальное значение содержимому файла. Имена файлов и расширения можно изменять без изменения содержимого файла и без изменения хэш-значения. Аналогичным образом содержимое файла можно изменить без изменения имени или расширения. Однако изменение даже одного символа в содержимом файла изменяет хэш-значение файла.
Целью хэш-значений является предоставление криптографически безопасного способа проверки того, что содержимое файла не было изменено. Хотя некоторые хэш-алгоритмы, в том числе MD5 и SHA1, больше не считаются безопасными для атак, цель безопасного хэш-алгоритма заключается в том, чтобы отрисовка невозможно изменить содержимое файла , либо случайно, либо вредоносной или несанкционированной попытки - и сохранить то же хэш-значение. Хэш-значения также можно использовать для определения того, имеют ли два разных файла одинаковое содержимое. Если хэш-значения двух файлов идентичны, содержимое файлов также идентично.
По умолчанию командлет Get-FileHash
использует алгоритм SHA256, хотя можно использовать любой хэш-алгоритм, поддерживаемый целевой операционной системой.
Примеры
Пример 1. Вычисление хэш-значения для файла
В этом примере используется командлет Get-FileHash
для вычисления хэш-значения файла /etc/apt/sources.list
. Хэш-алгоритм используется по умолчанию SHA256. Выходные данные передаются в командлет Format-List
для форматирования выходных данных в виде списка.
Get-FileHash /etc/apt/sources.list | Format-List
Algorithm : SHA256
Hash : 3CBCFDDEC145E3382D592266BE193E5BE53443138EE6AB6CA09FF20DF609E268
Path : /etc/apt/sources.list
Пример 2. Вычисление хэш-значения для ISO-файла
В этом примере используется командлет Get-FileHash
и алгоритм SHA384 для вычисления хэш-файла, скачаного администратором из Интернета. Выходные данные передаются в командлет Format-List
для форматирования выходных данных в виде списка.
Get-FileHash C:\Users\user1\Downloads\Contoso8_1_ENT.iso -Algorithm SHA384 | Format-List
Algorithm : SHA384
Hash : 20AB1C2EE19FC96A7C66E33917D191A24E3CE9DAC99DB7C786ACCE31E559144FEAFC695C58E508E2EBBC9D3C96F21FA3
Path : C:\Users\user1\Downloads\Contoso8_1_ENT.iso
Пример 3. Вычисление хэш-значения потока
В этом примере мы используем System.Net.WebClient для скачивания пакета на странице выпуска PowerShell. Страница выпуска также документирует хэш SHA256 каждого файла пакета. Мы можем сравнить опубликованное хэш-значение с тем, с которым мы вычисляем Get-FileHash
.
$wc = [System.Net.WebClient]::new()
$baseurl = 'https://github.com/PowerShell/PowerShell/releases/download/v6.2.4/'
$pkgname = 'powershell_6.2.4-1.debian.9_amd64.deb'
$pkgurl = $baseurl + $pkgname
$publishedHash = '8E28E54D601F0751922DE24632C1E716B4684876255CF82304A9B19E89A9CCAC'
$FileHash = Get-FileHash -InputStream ($wc.OpenRead($pkgurl))
$FileHash.Hash -eq $publishedHash
True
Пример 4. Вычисление хэша строки
PowerShell не предоставляет командлет для вычисления хэша строки. Однако можно написать строку в поток и использовать параметр InputStreamGet-FileHash
для получения хэш-значения.
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write("Hello world")
$writer.Flush()
$stringAsStream.Position = 0
Get-FileHash -InputStream $stringAsStream | Select-Object Hash
Hash
----
64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C
Параметры
-Algorithm
Указывает функцию криптографического хэша, используемую для вычисления хэш-значения содержимого указанного файла или потока. Функция криптографического хэша имеет свойство, которое невозможно найти два разных файла с одинаковым хэш-значением. Хэш-функции обычно используются с цифровыми подписями и для целостности данных. Допустимые значения для этого параметра:
- SHA1
- SHA256
- SHA384
- SHA512
- MD5
Если значение не указано или если параметр не указан, значение по умолчанию — SHA256.
По соображениям безопасности MD5 и SHA1, которые больше не считаются безопасными, следует использовать только для простой проверки изменений и не следует использовать для создания хэш-значений для файлов, требующих защиты от атак или изменения.
Тип: | String |
Допустимые значения: | SHA1, SHA256, SHA384, SHA512, MD5 |
Position: | 1 |
Default value: | SHA256 |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputStream
Задает входной поток.
Тип: | Stream |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-LiteralPath
Указывает путь к файлу. В отличие от параметра Path, значение параметра LiteralPath используется точно так же, как и тип. Символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите путь в одинарные кавычки. Одинарные кавычки указывают PowerShell не интерпретировать символы как escape-последовательности.
Тип: | String[] |
Aliases: | PSPath, LP |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Path
Указывает путь к одному или нескольким файлам в виде массива. Разрешены подстановочные знаки.
Тип: | String[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | True |
Входные данные
Строку, содержащую путь к файлу, можно передать в этот командлет.
Выходные данные
Microsoft.PowerShell.Utility.FileHash
Этот командлет возвращает объект, представляющий путь к указанному файлу, значение вычисляемого хэша и алгоритм, используемый для вычисления хэша.
Связанные ссылки
PowerShell