Herkese merhabalar,
Bugün sizlere C# üzerinden basit ama etkili hash kontrol uygulama kodlarını vereceğim isteyen arkadaşlar kodları inceleyebilir, isteyen arkadaşlar ise doğrudan uygulamayı kullanabilirler.
Öncelikle hash kontrol nedir, niye ihtiyaç duyulur?
Her dosyanın bir hash numarası vardır. Bu hash numaraları işletim sistemi iso dosyasından tutun en ufak dosyaya kadar her dosyaya ait bir imza, bir dna gibi tek ve benzersizdir. Dosyanın yapısı, boyutuna göre değişiklik gösterir. Hash numarası ile bir dosyanın bütünlüğü ve güvenilirliğini test etmek çok basittir.
Örneğin bir linux işletim sistemi veya Windows işletim sisteminin kurulum dosyasını indirmek istediğinizde yanında md5 veya farklı kodlamalarda dosyaların hash numaları yazar, bu hash numaraları indirme tamamlandıktan sonra indirdiğiniz dosya ile üreticinin sunduğu dosyanın aynı olduğunu kontrol etmek için kullanılır.


Bugün C# dilinde basit ve kullanışlı hash uygulaması yapıyoruz. Kodları aşağıda veriyorum. Kodları sağ tık menüsüne entegre olacak şekilde güncelledim bu nedenle tek başına çalışmayacaktır, kodu isterseniz tek başına çalışacak şekilde sonradan düzenleyebilirsiniz.
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main(string[] args)
{
string filePath = null;
if (args.Length > 0)
{
filePath = args[0];
}
if (filePath == null || !File.Exists(filePath))
{
Console.WriteLine("Geçerli bir dosya yolu sağlanamadı.");
Console.WriteLine("Çıkmak için bir tuşa basın...");
Console.ReadKey();
return;
}
Console.WriteLine("Kontrol edilecek hash algoritmasını seçin:");
Console.WriteLine("1. MD5");
Console.WriteLine("2. SHA1");
Console.WriteLine("3. SHA256");
Console.WriteLine("4. SHA512");
Console.Write("Seçiminiz: ");
string choice = Console.ReadLine();
HashAlgorithm hashAlgorithm = null;
switch (choice)
{
case "1":
hashAlgorithm = MD5.Create();
break;
case "2":
hashAlgorithm = SHA1.Create();
break;
case "3":
hashAlgorithm = SHA256.Create();
break;
case "4":
hashAlgorithm = SHA512.Create();
break;
default:
Console.WriteLine("Geçersiz seçim.");
Console.WriteLine("Çıkmak için bir tuşa basın...");
Console.ReadKey();
return;
}
Console.WriteLine("Lütfen kontrol edilecek hash değerini giriniz:");
string expectedHash = Console.ReadLine();
string fileHash = ComputeHash(filePath, hashAlgorithm);
if (fileHash.Equals(expectedHash, StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("Hash değerleri uyuşuyor.");
}
else
{
Console.WriteLine("Hash değerleri uyuşmuyor.");
}
Console.WriteLine("Çıkmak için bir tuşa basın...");
Console.ReadKey();
}
static string ComputeHash(string filePath, HashAlgorithm hashAlgorithm)
{
using (FileStream stream = File.OpenRead(filePath))
{
byte[] hashBytes = hashAlgorithm.ComputeHash(stream);
StringBuilder sb = new StringBuilder();
foreach (byte b in hashBytes)
{
sb.Append(b.ToString("x2"));
}
return sb.ToString();
}
}
}
Ben kodla uğraşmak istemiyorum diyen arkadaşlar için doğrudan uygulama ve reg dosyası :
Virüs tarama sonuçları : (Nereden indirirseniz indirin her dosyayı taratın!)
Sonuçlar için ayrıntılar yazısına tıklayınız.

İndirdiğiniz hash_kontrol.exe dosyasını C:\ dizinine atıp .reg dosyasını çalıştırıp sağ tık menüsüne ekleyebilirsiniz.

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\hash_kontrol]
@="Hash Kontrol"
[HKEY_CLASSES_ROOT\*\shell\hash_kontrol\command]
@="\"C:\\hash_kontrol.exe\" \"%1\""
Uygulamayı anlattığım şekilde kurduğunuzda sağ tık menünüze bu şekilde gelecek.

Hash kontrol dediğinizde ise karşınıza hangi algoritma ile karşılaştıracağınızı ve kaynak hash kodunu soracak. Eğer kaynak ile dosya kodu uyuşursa algoritma bazlı uyuşuyor eğer uyuşmazsa ise uyuşmuyor yanıtını alacaksınız.

Herkese esenlikler dilerim.