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 = new FileStream(inFileName, FileMode.Open, FileAccess.Read);

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

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

SymmetricAlgorithm myAlg = new RijndaelManaged();

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

myAlg.GenerateKey();

// 4: Şifreli olmayan dosya okunur.

byte[] fileData = new byte[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 = new CryptoStream(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 = new CspParameters();

persistanCsp.KeyContainerName = "Asimetrik";

RSACryptoServiceProvider myRSA = new RSACryptoServiceProvider(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 = new MD5CryptoServiceProvider();

FileStream file = new FileStream("buffered.txt", FileMode.Open, FileAccess.Read);

BinaryReader reader = new BinaryReader(file);

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

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

Yorum Yaz
Arkadaşların Burada !
Arkadaşların Burada !