Ana içeriğe atla

Hash Fonksiyonu Nedir? Hash Fonksiyonları ve Kullanım Alanları

Hash Function Example, Hash Fonksiyonları, Hask Çalışma Mantığı
Bu makalemizde kısaca şifreleme yöntemlerinden biri olan hash fonksiyonlarından bahsedeceğim. Bunun devamında ise ayrıntılı olarak hash fonksiyonlarının ne olduğunu ve genel mantığı, en çok kullanılan hash fonksiyonları ve  kullanım alanlarını anlatacağım. Konuyu anlatabilmek açısından bir örnekle başlamak istiyorum. Aslında bu örnek hash fonksiyonlarının temel kullanım alanlarına da örnektir.

Veritabanınızda binlerce kullanıcı var. Bu kullanıcıların şifreleri veri tabanında nasıl tutulmalıdır. Şifreleri olduğu gibi veri tabanına yazmanın çok tehlikeli olabileceğinin farkında mısınız? Veritabanınıza erişebilecek bir kişinin ilk bakacağı yer kullanıcı adı ve şifreleri olacaktır çünkü. Veri tabanına kadar gelebiliyorsa şifreleri da alsın artık diyebilirsiniz ama hırsızları her zaman dışarıda aramak da doğru değil.

Kısa örneğimin amacı hash fonksiyonlarının neden kullanıldığı ile ilgili aklınızda fikir oluşturmaktı. İsterseniz şifreme yöntemi olarak hash fonksiyonlarının özelliklerine bakarak "Hash Fonksiyonları Nedir?" sorusunun cevabını aramaya çalışalım.

Genel şifreleme mantığında simetrik yada asimetrik olması farketmeden belirli bir mesajı anahtar veya anahtarla şifreledikten sonra aynı anahtar ve ya başka bir anahtarla bu mesajı tekrar görüntüleyebilirsin. Hash fonksiyonlarının farkı ise mesajı hash fonsiyonları ile şifreledikten sonra bu mesajların tekrar elde edilebilmesini engellemektir. Hah fonksiyonlarının temel amacı belirli bir mesajın veya metnin bizim istediğimiz metin olup olmasını kontrol etmektir. Yukarıdaki şifreleri kaydetme işleminde de şifrelerin hash fonksiyonları ile şifrelendikten sonra kontrol edilmesi ve tekrar elde edilememesinin de mantığının altında bu yatar.

Önemli olduğu için bu noktayı tekrar vurgulamak istiyorum. Hash fonksiyonlarının diğer şifreleme tekniklerinden farkı şifrelenen mesajların tekrar elde edilmesini engellemektir. Doğruluğunu kontrol etmek içinse mesaja tekrar algoritma uygulanır ve eski şifrelenmiş mesajla aynı olup olmaması kontrol edilir. 

İsterseniz bu senaryoya göre şifrelerimi veritabanında nasıl tutmalıyız konusuna da bir bakalım.
Öncelikle kullanıcı kayıt olduğunda ve ya şifresini değiştirmek istediğinde kullanıcıdan aldığımız şifreyi makalenin devamında anlatacağım hash fonksiyonlarından birini kullanarak şifreliyoruz ve şifrelenmiş halini veritabanına kaydediyoruz. Kullanıcı her login olmaya çalıştığında girdiği şifreyi tekrar algoritmadan geçirerek bu sonucun veritabanındaki şifre ile aynı olup olmasını test ediyoruz. Teknik açıdan bakıldığında bu işlem için belirli bir kaynak tüketsek bile bu işlemi sadece login olarken yaptığımız için performans açısından sistemi etkilemiyor. Etkilese bile güvenlik için yapılması gereken en önemli konulardan bir tanesidir.

Örnek üzerinden de açıkladıktan sonra Hash fonksiyonlarının diğer tipik özelliği olan sabit uzunluktan bahsetmek istiyorum. Aslında temeline bakılırsa hash fonksiyonları Cheksum konusunun bir alt konusu olduğunu da görebilirsiniz. Checksum mantığında da büyük boyuttaki veriyi temsil eden sabirt uzunlukta bir numara üretilir. (Konu ile ilgili ayrıntılı bilgi almak isterseniz buradaki makaleye göz atabilirsiniz) Hash fonksiyonları da böyledir. Her algoritmanın kendisine özgü karakter uzunluğu vardır. Yani şifreleyeceğiniz mesajın uzunluğundan bağımsız olarak algoritma çıktısı herzaman sabit uzunluktadır.

Blog içinde hash algoritmaları ile ilgili bir çok makale de yer almaktadır. Bu makalelere aşağıdaki linklerden erişebilirsiniz.

1. Checksum Nedir? Kullanım Alanları Nelerdir?

2. C# Hash Fonksiyonları Kütüphanesi

3. C# Programlama Dilinde SHA1 Hash Algoritması VE Uygulama Örneği

4. C# Programlama Dilinde HMACSHA1 Hash Algoritması VE Uygulama Örneği

5. C# Programlama Dilinde SHA256 Hash Algoritması VE Uygulama Örneği

6. C# Programlama Dilinde HMACSHA256 Hash Algoritması VE Uygulama Örneği

7. C# Programlama Dilinde SHA384 Hash Algoritması VE Uygulama Örneği

8. C# Programlama Dilinde HMACSHA384 Hash Algoritması VE Uygulama Örneği

9. C# Programlama Dilinde SHA512 Hash Algoritması VE Uygulama Örneği

Tüm algoritmaların kodları arşivimde var. Çalışma mantıklarını bu şekilde çıkartabilirsiniz. İsteyen yoruma yazarsa paylaşabilirim.

Son olarak konuyu özetleyecek olursak şifreleme yöntemi olarak hash fonksiyonlarının iki temel özelliği vardır. Bunlar şifrelenmiş verinin sabit uzunlukta olması ve şifrelenmiş verinin tekrar elde edilememesidir.

Son olarak ta en çok kullanılan hash algoritmalarından bahsetmek istiyorum. Bu alanda en eski algoritmalardan biri MD5 olsa da şuanda en çok kullanılan algoritmalar SHA1, SHA256, SHA384, SHA512 algoritmalarıdır. Bunlar arasında SHA384 algoritması Facebook tarafından da kullanılmaktadır. Bu algoritmaların çeşitli uygulamaları ve algoritma detaylarını yukarıdaki linklerden erişebilirsiniz.



Konu ile alakalı sorularınız olursa lütfen sormaktan çekinmeyin. 

En kısa sürede yanıtlamaya çalışacağım...

Yorumlar

Bu blogdaki popüler yayınlar

Medyan (Ortanca) Nedir? Nasıl Hesaplanır? Nerelerde Kullanılır?

Medyan işlemi olasılık hesaplamalarında sıkça kullanılan bir sayı dizisinin ortalamasını hesaplamak için alternatif yöntemlerden bir tanesidir. Ortanca medyan işleminin diğer adıdır. Matematiksel olarak medyan işlemi bir sayı dizisi küçükten büyüğe sıralayarak ortada kalan elemanı medyan değeri olarak belirleme işlemidir. Örnek verecek olursak: 2, 1, 5, 4, 5, 1, 2, 3, 5 serisi sıralanırsa 1, 1, 2, 2, 3, 4, 5, 5, 5 serisi elde edilir. Bu seri 9 elemanlı olduğundan ortadaki, yani 5. eleman (medyan) olacaktır. 5. eleman 3 sayısıdır. Yani ortanca değeri 3'dür Eleman sayısı tek sayı olan bir seride medyan değerin sırasının hesaplaması şu şekilde formüle edilir. Medyanın Sırası = (Eleman Sayısı + 1) / 2 Bu formülü yukarıdaki örneği uygulayacak olursak; Medyanın Sırası = (9 + 1) / 2 = 5 Veri serisi eleman sayısı bir çift sayı ise bu durumda serinin 2 medyanı olacaktır. Örneğin 2, 1, 5, 4, 5, 1, 2, 3, 5, 4 serisi sıralandığında 1, 1, 2, 2, 3, 4, 4, 5, 5, 5 s

Ağaçlar Kireçle veya Badana İle Neden Boyanır?

Ağaçlar kireçle boyanmasının veya badana yapılmasının hem çevreye hem de doğaya, ağaçlara faydası var. Bu makalede bu geleneği enine boyuna tartışmaya çalıştık. Ağaca zarar veren mikrop ve bakterileri öldürür. Ağacı çok aşarı soğuk havalarda ve çok aşırı sıcak havalarda korur. Ağacın çürümesini ve kurtlanmasını önler. Ağacın gövdesinin alabileceği zararları en az düzeyde düşürmeyi sağlar. Hoş, güzel, hijyenik, temiz pırıl pırıl bir görüntü oluşturur. Ayrıca çok sıcak havalarda da ağacı yanmaya karşı korumak. En büyük etkisi soğuk havalarda ağacı don vurmalarına karşı korumak . Küresel ısınma göz önüne alındığında mevsim değişiklikleri ani don, ani ısı artışları ve azalışları sonucunun doğuracağı etkenler için yararlı etkin bir yöntem. Gövdeden obur dalların çıkmasını azaltmak için sürülür. Kireçleme ağaçları güneş yanığından korumak için yapılıyor. Ağaçlar da güneşten yanabiliyorlar. Bu arada odun dokudaki gözenekleri doldurarak kapattığı için, zararlıların yuv

Azərbaycan Dilində Vurğu Qəbul Etmeyen Şekilçiler

Sözlərdə hecalardan birinin digərlərinə nisbətən daha qüvvətli deyilməsinə heca vurğusu deyilir. Üzərinə vurğu düşən hecaya isə vurğulu heca deyilir. Azərbaycan dilində vurğu adətən söz sonuna düşür. Söz şəkilçi qəbul ederkən vurğu adətən şəkilçinin üzərinə keçir. Məsələn: çiç ə k - çiçəkl ə r - çiçəklərd ə n məkt ə b - məktəbl i - məktəblil ə r - məktəblilərd ə n Buna baxmayaraq dilimizdə bir sıra şəkilçilər var ki onlar vurğu qebul etmirlər. Bu məqalədə Azərbaycan dilində vurğu qebul etməyən şəkilçilər incələnəcək ve bu şekilçilərin hansı hallarda vurğu qebul edib hansı hallarda vurğu qebul etmediyi araşdırılacaqdır. Eyni zamanda bildirmək istəyirəm ki vurğu ilə bağlı daha geniş və ətraflı məlumat üçün Azərbaycan Dilində Vurğunun Praktik Məsələləri adlı məqaləyə də nəzər yetirə bilərsiniz.  1. İsimlərdəki şəxs(xəbərlik) şəkilçiləri Məsələn: müəli'məm müəli'msən müəli'mdir müəli'mik müəli'msiniz müəli'mdirlər Qeyd: -dır4