Algoritmanın C# programlama dili için tanıtımından önce biraz HMACSHA384 'den bahsetmek istiyorum. HMACSHA384 hash algoritmalarından bir tanesidir ve SHA384 algoritmasının simetrik halidir. (Hash algoritmaları ile ilgili detaylı bilgi almak isterseniz buradaki makaleye göz atabilirsiniz) Algoritma sonucunda 384 bit veya 96 hexadecimal şifreli metin üretilir. Hash algoritmasının mantığı gereği üretilen karakter uzunlukları her zaman 96 hexadecimal sayıdır.
C# programlama dilinde HMACSHA384 algoritmasının uygulanabilmesi için HMACSHA384 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 HMACSHA384 algoritmasının uygulamasına geçebiliriz. Bu uygulama için yazdığım kodlar aşağıdadır.
internal protected HashFunctionResponse ExecuteHMACSHA384Algorithm(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 hmacmSha384provider = new HMACSHA384(password))
{
var hash = hmacmSha384provider.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 HMACSHA384 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 hmacmSha384provider = new HMACSHA384(password))
{
var hash = hmacmSha384provider.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