Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

Encrypting and Decrypting Data (Veri şifreleme)

Veri güvenliğini sağlamak için veriyi şifreli bir şekilde transfer etmek önemlidir. Bunun için şifreleme tekniklerini bu makalede inceliyor olacağız. Bunun için .NET Framework bize bazı kütüphaneler sunmaktadır. (System.Security.Cryptography)

 

Simertrik Algoritmalar : Veriyi bir anahtar sözcük yardımıyla şifreler ve aynı anahtar ile geri açar. Bu algoritmalara örnek olarak ;

RijndaelManaged,RC2,DES,TripleDES verilebilir. Bütün simetrik algoritma sınıfları System.Securiy.Cryptography.SymmetricAlgorithm base sınıfından türerler.

 

BEST PRACTICES:

– Eğer encryptor ve decryptor windows XP ise Rijndael kullanmakta fayda var. Kırılması en zor algoritma Rijndael’dir . Aksi taktirde TripleDES kullanmalıyız.

 

//Simetrik algoritma ile şifreleme ve çözme

string inFileName = @”C:028442.BIE”, outFileName = @”C:028442.BIE.enc”;

// 1: Stream nesneleri yaratılır.

FileStream inFile = newFileStream(inFileName, FileMode.Open, FileAccess.Read);

FileStream outFile =newFileStream(outFileName,FileMode.OpenOrCreate,FileAccess.Write);

// 2: Simetrik algoritma nesnesi yaratılır.

SymmetricAlgorithm myAlg = newRijndaelManaged();

// 3: Random Bir key oluşturulur (opsiyonel)

myAlg.GenerateKey();

// 4: Şifreli olmayan dosya okunur.

byte[] fileData = newbyte[inFile.Length];

inFile.Read(fileData, 0, (int)inFile.Length);

// ICryptoTransform nesnesi yaratılır.

ICryptoTransform encryptor = myAlg.CreateEncryptor();

// 5: Crypto Stream yaratılıp veri yazılır

CryptoStream encryptStream = newCryptoStream(outFile, encryptor, CryptoStreamMode.Write);

encryptStream.Write(fileData, 0, fileData.Length);

// 6: Kapat

encryptStream.Close();

inFile.Close();

outFile.Close();

           

 

Asimetrik Algoritmalar : Genelde açık anahtar şifreleme olarak bilinir. Simetrik algoritmalar göre yavaştırlar.  System.Security.Cryptography.AsymmetricAlgorithm altındaki sınıflar ile asimetrik şifreleme yapabiliriz. .NET altındaki asimetrik algoritmalar şunlardır ; RSA , DSA

//Tekrar kullanmak için Key Pairları oluşturmak

CspParameters persistanCsp = newCspParameters();

persistanCsp.KeyContainerName = “Asimetrik”;

RSACryptoServiceProvider myRSA = newRSACryptoServiceProvider(persistanCsp);

myRSA.PersistKeyInCsp = true;

RSAParameters privateKey = myRSA.ExportParameters(true);

foreach (byte item in privateKey.D)

    Console.Write(item.ToString(“X2”)+” “);

 

Bunlarında dışında Hash algoritmaları vardır. Bunlarda orijinal data bilinemez. Sadece o verinin doğruluğu bilinebilir.
//MD5 ile şifresiz Hash

MD5 myHash = newMD5CryptoServiceProvider();

FileStream file = newFileStream(“buffered.txt”, FileMode.Open, FileAccess.Read);

BinaryReader reader = newBinaryReader(file);

myHash.ComputeHash(reader.ReadBytes((int)file.Length));

Console.Write(Convert.ToBase64String(myHash.Hash));

Reklamlar

Temmuz 13, 2010 - Posted by | ASP.NET | , , , ,

Henüz yorum yapılmamış.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s