- 28 Mar 2020
- 6,325
- 4,808
Giriş
Merhaba, C# uygulama geliştirme serimizin on ikinci yazısına hoş geldiniz.
Önceki yazımızda hash tür bulucu yapmıştık.
Bugünde bu hashleri oluşturmak için bir hash oluşturucu yapacağız.
Serinin önceki yazılarını okumak isteyenler için
Örnekler İle C# Geliştirme - Bölüm 1
Örnekler İle C# Geliştirme - Bölüm 2
Örnekler İle C# Geliştirme - Bölüm 3
Örnekler İle C# Geliştirme - Bölüm 4
Örnekler İle C# Geliştirme - Bölüm 5
Örnekler İle C# Geliştirme - Bölüm 6
Örnekler İle C# Geliştirme - Bölüm 7
Örnekler İle C# Geliştirme - Bölüm 8
Örnekler İle C# Geliştirme - Bölüm 9
Örnekler İle C# Geliştirme - Bölüm 10
Örnekler İle C# Geliştirme - Bölüm 11
İyi okumalar dilerim!
Yapılış
İlk önce projemizi oluşturmakla başlayalım.
Ben programın ismini "Hash Oluşturucu" şeklinde koyuyorum, siz de kendinize göre isimlendirebilirsiniz.
Proje oluştuktan sonra formun ismini Özellikler > Text bölümünden 'Hash Oluşturucu' değiştiriyorum.
Sonrasında Araç Kutusundan aşağıdaki araçları ekliyorum.
3 Label
2 TextBox
4 RadioButton
1 Button
Evet, tasarımımız bitti.
Şimdi gerekli kütüphanelerimizi ekleyelim.
Bu kütüphanelerimiz zaten yüklü geldiği için Nuget paket yöneticisinden eklememize gerek yok.
Direkt aşağıdaki şekilde projeye ekleyebilirsiniz.
C#:
using System.Security.Cryptography;
using System.Text;
Kütüphanemizi ekledikten sonra ise diğer kodlarımıza geçebiliriz.
C#:
private void button1_Click(object sender, EventArgs e)
{
string Metin = textBox1.Text;
// Burada Metin adında bir değişken oluşturuyoruz ve textBox1 içindeki değeri Metin değişkenine aktarıyoruz.
if (radioButton2.Checked) // MD5 olan radioButton checked (seçili) ise bu çalışacak.
{
string md5Hash = MD5HashAl(Metin);
textBox2.Text = md5Hash;
// Burada MD5HashAl içinden dönen değeri alıyoruz ve textbox2 içine yazdırıyoruz.
}
else if (radioButton3.Checked) // SHA1 olan radioButton checked (seçili) ise bu çalışacak.
{
string sha1Hash = SHA1HashAl(Metin);
textBox2.Text = sha1Hash;
// Burada SHA1HashAl içinden dönen değeri alıyoruz ve textbox2 içine yazdırıyoruz.
}
else if (radioButton4.Checked) // SHA256 olan radioButton checked (seçili) ise bu çalışacak.
{
string sha256Hash = SHA256HashAl(Metin);
textBox2.Text = sha256Hash;
// Burada SHA256HashAl içinden dönen değeri alıyoruz ve textbox2 içine yazdırıyoruz.
}
}
static string MD5HashAl(string input)
{
using (MD5 md5 = MD5.Create()) // MD5 hash algoritmasını oluşturuyoruz.
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
// Metnimizi UTF-8 kodlamasına dönüştürüyoruz.
byte[] hashBytes = md5.ComputeHash(inputBytes);
// Hash hesaplaması yapıyoruz.
return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
// Hash byte'larını hexadecimal biçimde string'e dönüştürüyoruz ve "-" karakterlerini kaldırıp, küçük harfe dönüştürüyoruz.
}
}
static string SHA1HashAl(string input)
{
using (SHA1 sha1 = SHA1.Create()) // SHA1 hash algoritmasını oluşturuyoruz.
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
// Metnimizi UTF-8 kodlamasına dönüştürüyoruz.
byte[] hashBytes = sha1.ComputeHash(inputBytes);
// Hash hesaplaması yapıyoruz.
return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
// Hash byte'larını hexadecimal biçimde string'e dönüştürüyoruz ve "-" karakterlerini kaldırıp, küçük harfe dönüştürüyoruz.
}
}
static string SHA256HashAl(string input)
{
using (SHA256 sha256 = SHA256.Create()) // SHA256 hash algoritmasını oluşturuyoruz.
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
// Metnimizi UTF-8 kodlamasına dönüştürüyoruz.
byte[] hashBytes = sha256.ComputeHash(inputBytes);
// Hash hesaplaması yapıyoruz.
return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
// Hash byte'larını hexadecimal biçimde string'e dönüştürüyoruz ve "-" karakterlerini kaldırıp, küçük harfe dönüştürüyoruz.
}
}
Sonuç
Evet, işlemimiz genel olarak bu kadardı.
Not: Anlattıklarımın dışında ilk başta bir radioButton'a checked vermeniz ve textBox2'i readonly yapmanız iyi olur.
Şimdi de testimizi yapalım.
Gördüğünüz gibi programımız başarılı bir şekilde hash dönüştürme işlemini yapıyor.
Kapanış
Evet, bugünkü projemiz bitmiş bulunmakta.
Gelecekteki derslerde görmek istediğiniz bir program olursa yazabilirsiniz.
Okuduğunuz için teşekkür ederim, iyi forumlar!