Hash Kod Kavramı ve GetHashCode() – C Sharp
Hash kod kavramı ya da fonksiyonu program tasarımında, geliştirmede kısacası her yerde oluşan bir şifreleme yöntemidir..
*
Hash dediğimiz kavram bizim nesnelerimizin ya da değişkenlerimizin DNA’sıdır. Hash kodları ile nesnelerimizin ve ya değişkenlerimizin izini sürebiliriz.
Bizim ilgilendiğim Hash kavramı ise yaptığımız yazılım tasarımında oluşturduğumuz her nesnemizin ve değişkenlerimize Hash kodu üretilir. Hash kodu üretmenin türlü türlü yolları vardır. (Bölme/Çarpma)
Bu Hash int tipinde sayısal, benzersiz bir değerdir. Bu int tipinde benzersiz bir değer olduğundan ötürü bu bizim nesnelerimizin ve değişkenlerimizin anahtarıdır. Değişkenlerimizi ve nesnelerimizi bu Hash kodu ile aratıp bulabiliriz.
Web sistemlerinde “Hash” leme yöntemi ile girdiğimiz/gönderdiğimiz ya da aldığımız veriler şifrelenir.
Yaptığımız programın aynısını yapsak bile bu sabit değişkenler hariç Hash kod’lar farklı olacaktır. Hiçbir zaman aynı olamaz. Bir örnek yapalım. Bu örnekte nesnelerimizin ve değişkenlerimizin Hash Kodunu öğrenelim. Hash kodu GetHashCode(); fonksiyonu ile öğrenilmekte.
Şimdi resimdeki gibi formumuzdaki tasarımı uygulayalım.
Bu tasarımla beraber örneğimizi daha da açalım. Programımızda;
- Metin Kutusu adlı Textbox nesnesi
- Buton adlı Button nesnesi
- int tipinde Sayı değişkeni ve başlangıç değeri sıfır.
- string tipinde yazi değişkeni oluşturalım ilk önce.
TextBox metinkutusu = new TextBox(); Button buton = new Button(); int sayi = 0; string yazi = "wwww.burakkutbay.com";
Bu nesnelerimizin ve değişkenlerimizin Hash kodlarını öğrenelim. Hash kodu öğrenmek için GetHashCode(); metodunu kullanıyoruz.
Yani;
değişkenadi.GetHashCode(); nesneadi.GetHashCode();
olarak kullanıyoruz.
Değişkenlerimizin ve nesnelerimizin Hash kodlarını öğrenmek için int tipindeki bir değişkene atamamız gerekiyor. Çünkü GetHashCode(); metodu int tipinde bir değer oluşturur. Bu oluşturulan int değerimizi HashKod1,HashKod2,HashKod3,HashKod4 adlı değişkenlerimizde tutalım.
int HashKod1 = metinkutusu.GetHashCode(); int HashKod2 = buton.GetHashCode(); int HashKod3 = sayi.GetHashCode(); int HashKod4 = yazi.GetHashCode();
GetHashCode(); metodu nesnelerin bellekte bulunduğu yerdeki adrese göre bir değer üretmekte. Değişkenlerin sabit değeri olduğu ve bellekte yer tuttuğu için bu değerler değişmiyecektir. Nesnelerimizin Hash kodları her çalıştırmamızda değişirken. Başlangıç değeri olan değişkenlerimizin ise Hash kodları sabittir. Örnek olarak; yazi adlı değişkenimizin Hash kodu -513760829’dur. Sayı değişkeniz 0 olduğundan değişme söz konusu olmayacaktır.
Hash kodlarımızı değişkenlerimize attık ilk başta yaptığımız tasarımımıza göre Hash kodlarımızı Textbox’a atmamız gerekiyor. Textbox’a atarken bu int tipindeki değeri .ToString(); fonksiyonu ile string veri tipine çevirmemiz gerekiyor.
Hash kodlarını alalım ve bu kodları görüntülemek için textbox’a atalım.
textBox1.Text = HashKod1.ToString(); textBox2.Text = HashKod2.ToString(); textBox3.Text = HashKod3.ToString(); textBox4.Text = HashKod4.ToString();
Tekrar etmekte fayda görüyorum bu kodların tümü tasarımda oluşturduğumuz Buton nesnemizin Click olayına yazıyoruz.
Son kod bloğunda ise hash kodları attığımız değişkenlerin Textbox’ta görüntülemek için string veri tipine dönüştürdük ardından ise formumuzda görüntüledik.
Toplarlamak gerekirse Hash kod diye tabir edilen kavram bir şifrelemedir. Bu şifreleme bizim programımızdaki oluşturduğumuz nesnelerin ve değişkenler içinde üretilmektedir. Hash kod üretim yöntemleri mevcuttur ancak bu yazıda dikkat çekmek istediğim konu basit ya da çok gelişmiş bir program için bile üretildiğidir.
Parça olarak yazdığımız kodları bir bütün olarak yazalım. Ardından programımızın çıktısını inceleyelim. Formumuzdaki buton nesnemizin Click olayına aşağıdaki kodları yazıyoruz.
private void button1_Click(object sender, EventArgs e) { TextBox metinkutusu = new TextBox(); Button buton = new Button(); int sayi = 0; string yazi = "wwww.burakkutbay.com"; int HashKod1 = metinkutusu.GetHashCode(); int HashKod2 = buton.GetHashCode(); int HashKod3 = sayi.GetHashCode(); int HashKod4 = yazi.GetHashCode(); textBox1.Text = HashKod1.ToString(); textBox2.Text = HashKod2.ToString(); textBox3.Text = HashKod3.ToString(); textBox4.Text = HashKod4.ToString(); }
Programımızı çalıştıralım, nesnelerimizin ve değişkenlerimizin Hash kodlarını görelim.
No Comment! Be the first one.