Ana içeriğe atla

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

HMACSHA512
C# programlama dilinde SHA512 hash algoritması ile birlikte bu algoritmanın simetrik algoritma veya simetrik şifreleme mantığı ile birleştirilmiş HMACSHA512  algoritması da vardır. HMACSHA512 algoritmasının temel amacı SHA512 algoritmasındaki şifreleme mantığını simetrik şifreleme ile birleştirerek bir güvenlik katmanı daha eklemektir. Algoritma çıktısı 128 karakterden ibaret olan SHA512 algoritmasının mapping yapılarak çözülmesi zor olsa da imkansızdır diyemeyiz. Simetrik algoritmayla birleşmesi ise şifrelenmiş bir metnin çözülmesini çok zorlaştırır. Bu açıdan bakıldığında HMACSHA512 algoritmasının kullanılmasının güvenlik açısından SHA512 algoritmasına göre daha güvenli olduğunu söyleyebiliriz.
HMACSHA512 hash algoritmalarının projelerde kullanılabilmesi için SHA512 algoritmasında olduğu gibi projeye System.Security.Cryptography isim uzayının eklenmesi gerekiyor. Bu ekleme işlemi haricinde HMACSHA512 algoritmasında bitler düzeyinde işlem yaptığı için ilk önce hash algoritması uygulanacak metnin byte dizisine dönüştürülmesi gerekiyor. Bu işlemden sonra elde ettiğiniz şifreli metin üzerinde de Replace işlemi yapacağız. Replace işleminin amacı ise şifreli metin sonucunda metin içerisindeki '-' karakterini atmaktır. Burada çok önemli bir nokta vardır ki HMACSHA512  algoritması algoritmayı uygularken byte dizisi üzerinde işlem yaptığı için her türlü elektronik veri bu algoritma kullanılarak hashlene bilir. Yani algoritma girdisi her zaman metin olamak zorunda değildir. Byte dizisine dönüştürdüğünüz her veri üzerinde bu işlemi yapabilirsiniz. 
Algoritmanın C# programlama dili için tanıtımından önce biraz HMACSHA512 'den bahsetmek istiyorum. HMACSHA512 hash algoritmalarından bir tanesidir ve SHA512 algoritmasının simetrik halidir. (Hash algoritmaları ile ilgili detaylı bilgi almak isterseniz buradaki makaleye göz atabilirsiniz) Algoritma sonucunda 512 bit veya 128 hexadecimal şifreli metin üretilir. Hash algoritmasının mantığı gereği üretilen karakter uzunlukları her zaman 128 hexadecimal sayıdır. 
C# programlama dilinde HMACSHA512 algoritmasının uygulanabilmesi için HMACSHA512 sınıfından yeni bir nesne üretmek ve bu sınıfın ComputeHash metodunu kullanmak gerekiyor. Bu uygulamanın yapıldığı örnek aşağıda yer almaktadır. 
Bu anlatımlardan sonra artık C# programlama dilinde HMACSHA512 algoritmasının uygulamasına geçebiliriz. Bu uygulama için yazdığım kodlar aşağıdadır.

internal protected HashFunctionResponse ExecuteHMACSHA512Algorithm(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 hmacmSha512provider = new HMACSHA512(password))
                {
                    var hash = hmacmSha512provider.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;

        }

Algoritma için önemli olan nokta algoritmanın uygulanabilmesi için girdi olarak şifre ve şifrelenecek verinin byte dizisi formatında algoritmaya verilmesidir. Algoritmanın asıl uygulaması aşağıda yer alan kısımdır. Yani biz HMACSHA512 nesnesi  üretirken şifreyi veriyoruz.  ComputeHash metodu ile ise algoritmayı uyguluyoruz.

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

                }

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

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