Get-FileHash (Microsoft.PowerShell.Utility)


Get-FileHash

Modül:
Microsoft.PowerShell.Utility

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>]

Tanım

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

Hash değerlerinin amacı, bir dosyanın içeriğinin değiştirilmediğini doğrulamak için kriptografik açıdan güvenli bir yol sağlamaktır. MD5 ve SHA1 de dahil olmak üzere bazı karma algoritmaların artık saldırılara karşı güvenli olduğu düşünülmese de, güvenli bir karma algoritmanın amacı, bir dosyanın içeriğinin kazara veya kötü niyetli veya yetkisiz girişimle değiştirilmesini imkansız hale getirmektir. - ve aynı hash değerini koruyun. İki farklı dosyanın tamamen aynı içeriğe sahip olup olmadığını belirlemek için karma değerlerini de kullanabilirsiniz. İki dosyanın karma değerleri aynıysa dosyaların içerikleri de aynıdır.

Varsayılan olarak Get-FileHash cmdlet'i SHA256 algoritmasını kullanır, ancak hedef işletim sistemi tarafından desteklenen herhangi bir karma algoritma da kullanılabilir.

Örnekler

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

Bu örnek, /etc/apt/sources.list dosyasının karma değerini hesaplamak için Get-FileHash cmdlet'ini kullanır. Kullanılan karma algoritması varsayılandır: SHA256. Çıkışı bir liste olarak biçimlendirmek için çıktı Format-List cmdlet'ine aktarılır.

Get-FileHash /etc/apt/sources.list | Format-List

Algorithm : SHA256
Hash      : 3CBCFDDEC145E3382D592266BE193E5BE53443138EE6AB6CA09FF20DF609E268
Path      : /etc/apt/sources.list

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

Bu örnek, bir yöneticinin internetten indirdiği bir ISO dosyasının karma değerini hesaplamak için Get-FileHash cmdlet'ini ve SHA384 algoritmasını kullanır. Çıkışı bir liste olarak biçimlendirmek için çıktı Format-List cmdlet'ine aktarılır.

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: Bir akışın karma değerini hesaplayın

Bu örnekte, Powershell yayın sayfasından bir paket indirmek için System.Net.WebClient'i kullanıyoruz. Sürüm sayfası ayrıca her paket dosyasının SHA256 karmasını da belgelemektedir. Yayınlanan hash değerini Get-FileHash ile hesapladığımız hash değeriyle 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ını hesaplayın

PowerShell, bir dizenin karmasını hesaplamak için bir cmdlet sağlamaz. Ancak, bir akışa bir dize yazabilir ve karma değerini almak için Get-FileHash'ın InputStream parametresini 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 hesaplamak için kullanılacak şifreleme karma işlevini belirtir. Bir kriptografik karma işlevi, aynı karma değerine sahip iki farklı dosyayı bulmanın mümkün olmaması özelliğine sahiptir. Hash işlevleri genellikle dijital imzalarla ve veri bütünlüğü için kullanılır. Bu parametre için kabul edilebilir değerler şunlardır:

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MD5

Hiçbir değer belirtilmezse veya parametre atlanırsa varsayılan değer SHA256'dır.

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

Tip :

String

Kabul edilen değerler:

SHA1, SHA256, SHA384, SHA512, MD5

Konum:

1

Varsayılan değer:

SHA256

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-InputStream

Giriş akışını belirtir.

Tip :

Aktarım

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-LiteralPath

Bir 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 yorumlanmaz. Yol kaçış karakterleri içeriyorsa yolu tek tırnak işaretleri içine alın. Tek tırnak işaretleri PowerShell'e karakterleri kaçış dizileri olarak yorumlamaması talimatını verir.

Tip :

String[]

Takma adlar:

PSPath, LP

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-Path

Bir veya daha fazla dosyanın yolunu dizi olarak belirtir. Joker karakterlere izin verilir.

Tip :

String[]

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

True

Girişler

Dize

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 karma değerini ve karma değerini hesaplamak için kullanılan algoritmayı temsil eden bir nesneyi döndürür.

İlgili makaleler