Get-FileHash
Belirtilen karma algoritmasını kullanarak bir dosyanın karma değerini hesaplar.
Syntax
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 imkansız hale getirmek ve aynı karma değerini korumaktır. Karma değerleri, iki farklı dosyada tam olarak aynı içeriğe sahip olup olmadığını belirlemek için 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 SHA256 algoritmasını kullanır.
Örnekler
Örnek 1: Dosyanın karma değerini hesaplama
Bu örnek, dosyanın karma değerini hesaplamak için cmdlet'ini /etc/apt/sources.list
kullanırGet-FileHash
. Kullanılan karma algoritması varsayılan olan SHA256'dır. Çıkış, Format-List
çıkışı liste olarak biçimlendirmek için cmdlet'ine gönderilir.
Get-FileHash /etc/apt/sources.list | Format-List
Algorithm : SHA256
Hash : 3CBCFDDEC145E3382D592266BE193E5BE53443138EE6AB6CA09FF20DF609E268
Path : /etc/apt/sources.list
Örnek 2: ISO dosyasının karma değerini hesaplama
Bu örnekte yöneticinin Get-FileHash
İnternet'ten indirdiği iso dosyasının karma değerini hesaplamak için cmdlet ve SHA384 algoritması kullanılır. Çıkış, Format-List
çıkışı liste olarak biçimlendirmek için cmdlet'ine gönderilir.
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ı belgelenmiştir. Yayımlanan karma değerini ile Get-FileHash
hesapladığı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ğere sahip iki farklı dosyayı bulmanın mümkün olmadığını belirten ö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
- MD5
Değer belirtilmezse veya parametre atlanırsa, varsayılan değer SHA256'dır.
Güvenlik nedeniyle, artık güvenli olarak kabul edilmeyen MD5 ve SHA1 yalnızca basit değişiklik doğrulaması için kullanılmalı ve saldırılara veya kurcalamaya karşı koruma gerektiren dosyalar için karma değerler oluşturmak için kullanılmamalıdır.
Type: | String |
Accepted values: | SHA1, SHA256, SHA384, SHA512, MD5 |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputStream
Giriş akışını belirtir.
Type: | Stream |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Dizi olarak bir veya daha fazla dosyanın yolunu belirtir. Joker karakterlere izin verilir.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
Girişler
Bir dizeyi, bir veya daha fazla dosyaya Get-FileHash
yol içeren cmdlet'e aktarabilirsiniz.
Çıkışlar
Microsoft.PowerShell.Utility.FileHash
Get-FileHash
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.