Aracılığıyla paylaş


Get-FileHash

Belirtilen karma algoritmasını kullanarak bir dosyanın karma değerini hesaplar.

Sözdizimi

Get-FileHash
   [-Path] <String[]>
   [-Algorithm <String>]
   [<CommonParameters>]
Get-FileHash
   -LiteralPath <String[]>
   [-Algorithm <String>]
   [<CommonParameters>]
Get-FileHash
   -InputStream <Stream>
   [-Algorithm <String>]
   [<CommonParameters>]

Description

cmdlet'i Get-FileHash , belirtilen karma algoritmasını kullanarak bir dosyanın karma değerini hesaplar. Karma değer, dosyanın içeriğine karşılık gelen benzersiz bir değerdir. Karma, dosyanın içeriğini dosya adı, uzantısı veya başka bir adla tanımlamak yerine, dosyanın içeriğine benzersiz bir değer atar. Dosya adları ve uzantıları, dosyanın içeriği değiştirilmeden ve karma değeri değiştirilmeden değiştirilebilir. Benzer şekilde, dosyanın içeriği ad veya uzantı değiştirilmeden değiştirilebilir. Ancak, bir dosyanın içeriğindeki tek bir karakterin bile değiştirilmesi, dosyanın karma değerini değiştirir.

Karma değerlerin amacı, dosyanın içeriğinin değiştirilmediğini doğrulamak için şifreleme açısından güvenli bir yol sağlamaktır. MD5 ve SHA1 dahil olmak üzere bazı karma algoritmalar artık saldırılara karşı güvenli olarak kabul edilmese de, güvenli karma algoritmasının amacı bir dosyanın içeriğini (yanlışlıkla veya kötü amaçlı ya da yetkisiz girişimle) değiştirmeyi ve aynı karma değerini korumayı imkansız hale getirmektir. İki farklı dosyada tam olarak aynı içeriğe sahip olup olmadığını belirlemek için karma değerleri de kullanabilirsiniz. İki dosyanın karma değerleri aynıysa, dosyaların içeriği de aynıdır.

Varsayılan olarak, Get-FileHash hedef işletim sistemi tarafından desteklenen karma algoritmalar kullanılabilse de cmdlet'i SHA256 algoritmasını kullanır.

Örnekler

Örnek 1: Bir dosyanın karma değerini hesaplama

Bu örnek, dosyanın karma değerini hesaplamak için cmdlet'ini Powershell.exe kullanırGet-FileHash. Kullanılan karma algoritması varsayılan sha256'dır. Çıkış, çıkışı liste olarak biçimlendirmek için cmdlet'ine kanalize edilir Format-List .

Get-FileHash $PSHOME\powershell.exe | Format-List

Algorithm : SHA256
Hash      : 908B64B1971A979C7E3E8CE4621945CBA84854CB98D76367B791A6E22B5F6D53
Path      : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Örnek 2: ISO dosyasının karma değerini hesaplama

Bu örnekte cmdlet'i ve SHA384 algoritması, yöneticinin İnternet'ten indirdiği ISO dosyasının karma değerini hesaplamak için kullanılırGet-FileHash. Çıkış, çıkışı liste olarak biçimlendirmek için cmdlet'ine kanalize edilir 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

Örnek 3: Akışın karma değerini hesaplama

Bu örnekte, PowerShell yayın sayfasından bir paket indirmek için System.Net.WebClient kullanıyoruz. Yayın sayfasında ayrıca her paket dosyasının SHA256 karması da belgelenmiştir. Yayımlanan karma değerini ile Get-FileHashhesapladığımız karma değerini karşılaştırabiliriz.

$wc = [System.Net.WebClient]::new()
$pkgurl = 'https://github.com/PowerShell/PowerShell/releases/download/v6.2.4/powershell_6.2.4-1.debian.9_amd64.deb'
$publishedHash = '8E28E54D601F0751922DE24632C1E716B4684876255CF82304A9B19E89A9CCAC'
$FileHash = Get-FileHash -InputStream ($wc.OpenRead($pkgurl))
$FileHash.Hash -eq $publishedHash

True

Örnek 4: Bir dizenin karması hesaplanır

PowerShell, bir dizenin karması hesaplamak için bir cmdlet sağlamaz. Ancak, bir akışa bir dize yazabilir ve karma değerini almak için inputstream parametresini Get-FileHash kullanabilirsiniz.

$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

Parametreler

-Algorithm

Belirtilen dosya veya akışın içeriğinin karma değerini hesaplamada kullanılacak şifreleme karma işlevini belirtir. Şifreleme karma işlevi, aynı karma değerine sahip iki farklı dosyayı bulmanın mümkün olduğu özelliğine sahiptir. Karma işlevler genellikle dijital imzalarla ve veri bütünlüğü için kullanılır. Bu parametrenin kabul edilebilir değerleri şunlardır:

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MACTripleDES
  • MD5
  • RIPEMD160

Değer belirtilmezse veya parametre atlanırsa, varsayılan değer SHA256'dır.

Güvenlik nedeniyle, artık güvenli kabul edilmeyen MD5 ve SHA1 yalnızca basit değişiklik doğrulaması için kullanılmalı ve saldırı veya kurcalamaya karşı koruma gerektiren dosyalar için karma değerler oluşturmak için kullanılmamalıdır.

Tür:String
Kabul edilen değerler:SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160
Position:Named
Default value:SHA256
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-InputStream

Giriş akışını belirtir.

Tür:Stream
Position:Named
Default value:None
Gerekli:True
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-LiteralPath

Dosyanın yolunu belirtir. Path parametresinden farklı olarak, LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmamıştır. Yol kaçış karakterleri içeriyorsa, yolu tek tırnak içine alın. Tek tırnak işaretleri PowerShell'e karakterleri kaçış dizisi olarak yorumlamamasını belirtir.

Tür:String[]
Diğer adlar:PSPath
Position:Named
Default value:None
Gerekli:True
İşlem hattı girişini kabul et:True
Joker karakterleri kabul et:False

-Path

Dizi olarak bir veya daha fazla dosya yolunu belirtir. Joker karakterlere izin verilir.

Tür:String[]
Position:0
Default value:None
Gerekli:True
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:True

Girişler

String

Bir dosyanın yolunu içeren bir dizeyi bu cmdlet'e aktarabilirsiniz.

Çıkışlar

Microsoft.PowerShell.Utility.FileHash

Bu cmdlet, belirtilen dosyanın yolunu, hesaplanan karmanın değerini ve karmayı hesaplamak için kullanılan algoritmayı temsil eden bir nesne döndürür.