System.Secuity.Cryptography | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar System.Secuity.Cryptography

C# MD5 yöntemi ile metin şifreleme

14 August 2011 Yorum yapılmamış

Aşağıdaki küçük fonksiyon yardımıyla string tipindeki değişkenlerin içeriğini MD5 yöntemi ile şifreleyebiliriz.

Öncelikle kodumuzun using kısmına System.Security.Cryptography namespace‘ini eklememiz lazım.

Böylece MD5CryptoServiceProvider sınıfından yeni bir örnek (instance) oluşturabilir, ve şifreleme sağlayıcısı (crypto service provider) olarak kullanabiliriz.

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

public static string Sifrele(string Metin)
{
	MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

	byte[] ba = Encoding.UTF8.GetBytes(Metin);
	ba = md5.ComputeHash(ba);

	StringBuilder sb = new StringBuilder();
	foreach (byte b in ba)
	{
		sb.Append(b.ToString("x2").ToLower());
	}

	return sb.ToString();
}

C# ile Hash işlemi

06 July 2010 2 yorum

Sql Server ile nasıl hash yapabileceğimizi daha önce Sql Server’da Hash işlemi isimli makalemde yazmıştım. Bu sefer, .net üzerinde C# ile nasıl hash işlemi yapabileceğimizi yazacağım.

Hash, büyük boyutta girdi verisi için sabit boyutlu üretilen benzersiz değerdir. Hash algoritmalarının yapısından dolayı, girdi verisindeki küçük değişiklikler sonuç verisinde büyük farklılıklara yol açmaktadır.

.Net Framework üzerinde bulunan System.Security.Cryptography namespace’i, güvenli şifreleme ve çözme işlemleri için şifreleme servislerini barındırır.

.Net Framework şu hash algoritmalarını destekler;

MD5, girdi verisini şifrelemek için 128 bit şifreleyici kullanır
SHA1, girdi verisini şifrelemek için 160 bit şifreleyici kullanır
SHA256, girdi verisini şifrelemek için 256 bit şifreleyici kullanır
SHA384, girdi verisini şifrelemek için 384 bit şifreleyici kullanır
SHA512, girdi verisini şifrelemek için 512 bit şifreleyici kullanır

En çok kullanılan şifreleme yöntemlerinden biri SHA1‘dir.

SHA1 Hashing Algoritması Örneği

Öncelikle kod yazdığımız dosyanın using kısmına System.Secuity.Cryptography namespace’ini eklemeliyiz;

using System.Secuity.Cryptography;

SHA1 sınıfından bir örnek oluşturalım;

SHA1 sha = new SHA1CryptoServiceProvider();

SHA1 sınıfı abstract bir sınıf olduğu için kendisinden örnek oluşturamıyoruz. SHA1 sınıfından türetilen SHA1CryptoServiceProvider sınıfından bir örnek oluşturuyoruz.

Artık yapmamız gereken, sha isimli değişkenimizin ComputeHash() method’unu çağırmak. ComputeHash() method’u, şifrelenecek veriyi parametre olarak byte dizisi aldığı ve geriye şifrelenmiş veriyi byte dizisi olarak döndürdüğü için aşağıdaki örnekte olduğu gibi kullanabiliriz;

string SifrelenecekVeri = "http://www.enginpolat.com/";

string SifrelenmisVeri = Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(SifrelenecekVeri)));

Uygulamanın kodlarının toparlanmış hali;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

class Program
{
  static void Main(string[] args)
  {
    SHA1 sha = new SHA1CryptoServiceProvider();

    string SifrelenecekVeri = "http://www.enginpolat.com/";

    string SifrelenmisVeri = Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(SifrelenecekVeri)));

    Console.WriteLine(SifrelenmisVeri);

    Console.ReadLine();
  }
}

Yukarıdaki örneği çalıştırırsanız şifrelenmiş çıktı şöyle olacaktır;

8hocM3G7QhUoN7Nm3bWMSr0/SsM=