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
Yorum Gönder