Ana içeriğe atla

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

SHA256, Hash Algoritması, Logo, C#,
C# programlama dilinde bir çok hash algoritması ile birlikte SHA256 algoritması bu dili kullananların hizmetine sunulmuştur. SHA256 hash algoritmalarının projelerde kullanılabilmesi için projeye System.Security.Cryptography isim uzayının eklenmesi gerekiyor. Bu ekleme işlemi haricinde SHA256 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. Burada çok önemli bir nokta vardır ki SHA256 algoritması algoritmayı uygularken byte dizisi üzerinde işlem yaptığı için her türlü elektronik veri bu algoritma kullanılarak hashlene bilir. 

Algoritmanın C# programlama dili için tanıtımından önce biraz SHA256'den bahsetmek istiyorum. SHA256 hash algoritmalarından bir tanesidir. (Hash algoritmaları ile ilgili detaylı bilgi almak isterseniz buradaki makaleye göz atabilirsiniz) Algoritma sonucunda 256 bit veya 64 hexadecimal şifreli metin üretilir. Hash algoritmasının mantığı gereği üretilen karakter uzunlukları her zaman 64 hexadecimal sayıdır. 
C# programlama dilinde SHA256 algoritmasının uygulanabilmesi için SHA256CryptoServiceProvider 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. Son yaptığımız replace işlemi ise algoritma çıktısındaki "-" karakerini atmak içindir.

C# SHA256 Uygulaması

using System;
using System.Security.Cryptography;
using System.Text;

namespace Laitech.Core.Service.Common.Security
{
    public class HashFunctions
    {
        public static string HashSHA256(string plaintext)
        {
            using (var sha256provider = new SHA256CryptoServiceProvider())
            {
                var hash = sha256provider.ComputeHash(Encoding.UTF8.GetBytes(plaintext));
                return 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

  1. Anladığım kadarıyla elinde SHA256 ile şifrelenmiş bir şifre var ve bu şifrenin ne olduğunu öğrenmek istiyorsun. Konu hassasiyetinden dolayı kısaca açıklamaya çalışacağım.
    Hash algoritmalarının mantığı şifrelenmiş bir metni geri elde etmemek üzerinedir. Yani algoritma olarak şifrelenmiş bir metni başka bir algoritma kullanarak geri elde edemezsin. Bunun çözümü de mapping table kullanmaktır. Yani karşılaştırma tablosu kullanmaktır. Şifre büyüklüğünü ve ya metin büyüklüğünü tahmin ediyorsan veya en azından hangi aralıkta olabileceğini tahmin ediyorsan işin daha da kolaylaşabilir. Ama yine de günler alabilir...
    Not 1: Eğer salt and paper yöntemi kullanılmışsa geri elde etme olasılığı çok düşüktür.
    Not 2: Algoritma çıktısı 64 karakterse SHA256 veya HMAC SHA256 algoritması kullanılmış olabilir. Eğer HMAC SHA256 algoritması kullanılmışsa sadece tablolar yetmeyebilir. Aynı zamanda şifreleme zamanı kullanılan şifreyi de bilmen gerekebilir. Yoksa şifreyi çözmen seneler alabilir...

    YanıtlaSil
  2. Merhabalar,
    Bir Sorum olcaktı, SHA256 ile şifrelenmiş bir string değeri veritabanına kaydettikten sonra veritabanına erişen biri hash kodunu kopyalayıp login ekranına yapıştırıp girebilirse passwordu şifrelemek ne işe yarar ki?
    İlaveten, diyelim ki hangi algoritmayla haslandiğini bilmediğim bir şifre buldum bu şifreyi encode etmek için tüm algoritma tiplerini deneyerek bulamazmıyım?
    Teşekkürler.

    YanıtlaSil
    Yanıtlar
    1. Birinci sorun için: Login işlemlerinde şifre tekrar hashlenerek kontrol edildiği için veritabanından alınmış hashli şifreyi yazman anlamsız olacaktır. Çünkü bu hashli şifreyi tekrar hashleyip kontrol edecek ve login olmayacak.

      İkinci sorun için: Hash algoritmaları genelde hangi algoritma ile hashlendiğini bildiğin halde çözülemeyecek şekilde tasarlanır. Tabi ki, bir çok algoritmanın bu anlamda açığı var. Bu yüzden genelde simetrik algoritmalarla birleştirilmiş hash algoritmaları tercih edilmelidir. Örneğin SHA256 yerine HMACSHA256 daha güvenli yöntemlerdir.

      Üçüncü sorun Deneyerek bulamaz mıyım: Basit olasılık hesapları yaparsan imkansız olduğunu görebilirsin. Kullanılacak yöntem tüm bit olasılıkları için mapping yapmak olsa da, tüm olasılıkları kaydedebileceğin hafıza teknolojisi şimdilik yok...

      Birkaç sitede algoritmalara göre mapping tabloları var. Şansın varsa buradan çözebilirsin...

      Sil

Yorum Gönder

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