Ana içeriğe atla

C# Programlama Dilinde HMACMD5 Hash Algoritması VE Uygulama Örneği

HMACMD5 Logo, HMACMD5 Images
HMACMD5 algoritması MD5 algoritması ile simetrik şifreleme mantığının birleştirilmesi ile oluşturulmuş bir hash algoritmasıdır. 
MD5 bilinen hash fonksiyonları arasında en eskilerden biridir. Zamanla hash fonksiyonlarının sayısının artması ve MD5 algoritmasının güvensiz algoritma olarak değerlendirilmesinden dolayı kullanımı da çok azalmıştır. Bu yüzden hash fonksiyonlarının en çok kullanım alanlarından biri olan şifrelerin veri tabanında tutulması için tercih edilmesi çok doğru bir yaklaşım değildir.  Buna rağmen algoritma işlem süresinin kısa olmasından dolayı MD5 algoritması küçük uygulamalarda kullanılmaktadır. HMACMD5 algoritmasının MD5 algoritmasından farkı ise algoritmanın uygulanması sırasında kullanılan anahtarla ilgilidir. Yani MD5 algoritmasında şifrelenecek metin verilir ve algoritma sonucu nerde uygulanmasından bağımsız olarak aynı sonucu üretir. Bunun içinde HMACMD5 algoritması geliştirilmiştir. Yani algoritma ile birlikte kullanılan şifre girdiğiniz şifreye özgü bir sonuç üretir. 

Yukarıda kısaca açıklamaya çalıştığım HMACMD5 algoritmasının isterseniz C# programlama dilindeki uygulamasına bakalım.
HMACMD5 algoritma sonucunda MD5 algoritmasında olduğu gibi 128 bit veya 32 hexadecimal şifreli metin üretilir. Hash algoritmasının mantığı gereği üretilen karakter uzunlukları her zaman 32 hexadecimal sayıdır. 
C# programlama dilinde HMACMD5 algoritmasının uygulanabilmesi için HMACMD5 sınıfından yeni bir nesne üretmek ve bu sınıfın ComputeHash metodunu kullanmak gerekiyor. Bu sınıf  System.Security.Cryptography uzayında yer alır. İşlemin başarısız olması durumunda InvalidOperationException türünde hata döner. Bu uygulamanın yapıldığı örnek aşağıda yer almaktadır. Son yaptığımız replace işlemi ise algoritma çıktısındaki "-" karakerini atmak içindir.

internal protected HashFunctionResponse ExecuteHMACMD5Algorithm(HashFunctionRequest request)
        {
            var response = new HashFunctionResponse
            {
                Success = false,
                Exception = null,
                Message = EHashFunctionMessage.IntializeAlgoritm,
                HashFunctionResult = null
            };
            try
            {

                var password = Encoding.UTF8.GetBytes(request.Password);
                var plainttext = Encoding.UTF8.GetBytes(request.PlainText);
                using (var hmacmMdp5provider = new HMACMD5(password))
                {
                    var hash = hmacmMdp5provider.ComputeHash(plainttext);
                    response.HashFunctionResult = BitConverter.ToString(hash).Replace("-", "");
                }

                response.Success = true;
                response.Exception = null;
                response.Message = EHashFunctionMessage.Success;
            }
            catch (InvalidOperationException invalidOperationException)
            {
                response.Success = false;
                response.Exception = invalidOperationException;
                response.Message = EHashFunctionMessage.InvalidOperationException;
                response.HashFunctionResult = null;
            }
            catch (Exception exception)
            {
                response.Success = false;
                response.Exception = exception;
                response.Message = EHashFunctionMessage.UnexpectedException;
                response.HashFunctionResult = null;
            }
            return response;
        }


Bu arada önemli olduğu için bu konuyu da sizinle paylaşmak istiyorum. MD5 ve HMACMD5 algoritmasının güvensiz olmasının 2 nedeni vardır. Bunlardan birincisi ürettiği metnin karakter uzunluğudur. Bu algoritmalardan MD5 algoritması ile üretilen metin 128 bit, yani 32 hexadecimal sayıdan oluştuğu için kolayca maping yapılarak tüm olasılıklar ortaya koyulmuştur. Yani hash fonksiyonlarının temel mantığı olan şifrelendikten sonra elde edilemeyen veya elde edilmesi çok zaman alan veriye dönüştürmesi çok zaman almalı iken MD5 algoritması ile şifrelenmiş bir metinin geri elde edilmesi kişisel bilgisayarlarda bile saatler alabilir. İşte bu yüzden güvensiz algoritma kategorisindedir... Buna rağmen HMACMD5 algoritması simetrik şifreleme ile birleşerek güvenlik katmanı sağladığı için MD5 algoritmasına göre daha güvenlidir. Ayrıca Hash Fonksiyonları ile ilgili yazdığım makaleye de buradan 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

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 ...

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...

Sözlerde Vurğunun Yerini Necə Tapmaq Olar?

Azərbaycan dilindəki her hansı sözdə vurğunun yerini tapmaq üçün sözü hecalara ayırmadan nisbətən qüvvətli demək lazımdır. Çünki vurğulu heca tələffüz zamanı özünü asanlıqla biruzə verir. Onu da bilmək lazımdır ki, hecalara ayrılarkən sözdəki bütün hecalar eyni tonda tələffüz olunur. Vurğunu asand tapmaq üçün sözü sərbəst şəkildə tələffüz edib, hecaları nisbətən qüvvətli demək lazımdır. Tələffüz zamanı vurğu ilə bərabər sözün düzgün tələffüzü üst-üstə düşərsə bu heca vurğulu hecadır. Bu açıqlamalardan sonra qısaca sözlərdə vurğunu yerini nece tapmaq olar sualının cavablaya bilmək üçün vurğunun məntiqini başa düşmək lazımdır. Vurğu sözdə bir hecanın digər hecalara görə daha qüvvətli deyilməsinə deyilir. Onda vurğunun yerini düzgün tapmaq üçün sırayla sözdeki bütün hecalar digərlərinə nisbətən daha qüvvətli tələffüz olunur. Eger bu qüvvətli tələffüzlərdən biri bu sözün normal tələffüzü ilə örtüşərsə, onda bu heca vurğulu hecadır. Qeyd edek ki, sözlərdə vurğu '  işarəsi ilə göstər...