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
----
64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3CParametreler
-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.