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));

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

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s