BLAKE2 ile Hash Oluşturma

BLAKE2, MD5, SHA-1, SHA-2 ve SHA-3’ten daha hızlı bir kriptografik hash algoritması olmakla birlikte, en son standart olan SHA-3 kadar güvenlidir. BLAKE2, yüksek hız, güvenlik ve basitlik nedeniyle birçok projeyle kabul edilmiştir.

BLAKE2’nin iki çeşit algoritması vardır:

  • BLAKE2b (veya sadece BLAKE2) 64 bitlik platformlar (NEON etkinleştirilmiş ARM’lar da dahil olmak üzere) için optimize edilmiştir ve 1 ile 64 bayt arasında herhangi bir boyutta özet üretir.
  • BLAKE2s 8 ila 32 bitlik platformlar için optimize edilmiştir ve 1 ila 32 bayt arasında herhangi bir boyutta özet üretir.

Daha fazla bilgi için https://blake2.net/ adresini ziyaret edebilirsiniz.

Github’daki C# kütüphanesini kullanarak, BLAKE2b ile minimum 8 bit, maksimum 512 bit boyutunda hash üretebiliyoruz. Aşağıdaki örnekte boyut 512 bit verildi. Blake2Sharp kütüphanesini https://github.com/BLAKE2/BLAKE2 adresinden indirebilirsiniz.

private static string Blake2Hash(string text)
{
    return BitConverter.ToString(Blake2B.ComputeHash(Encoding.UTF8.GetBytes(text), 
                                 new Blake2BConfig { OutputSizeInBits = 512 })).Replace("-", "");
}

Ekran Görüntüsü Alma

Bazen uygulama içinden programatik olarak ekran görüntüsü almak gerekebilir. Aşağıdaki metot ile bir veya daha fazla ekrandan ekran görüntüsü alınıp kaydedilebilmektedir.

System.Drawing ve System.Windows.Forms referanslarını projeye eklemek gerekiyor.

public static void MultipleScreenCapture(string filename)
{
    var ss = new Bitmap(SystemInformation.VirtualScreen.Width,
                        SystemInformation.VirtualScreen.Height,
                        PixelFormat.Format32bppArgb);
 
    Graphics.FromImage(ss).CopyFromScreen(SystemInformation.VirtualScreen.X,
                                          SystemInformation.VirtualScreen.Y,
                                          0,
                                          0,
                                          SystemInformation.VirtualScreen.Size,
                                          CopyPixelOperation.SourceCopy);
 
    ss.Save(filename, ImageFormat.Png);
}