TribleDES algoritması,DES algoritması üzerine geliştirerek ve açıkları kapatılarak yazılmıştır.Bir önceki makalemde belirttiğim gibi DES algoritması brute force(deneme yanılma)  saldırılar için en mükemmel blok şifreleme algoritması.Ancak SBox tan kaynaklanan açıklardan dolayı DES , brute force saldırılarında bir yerden sonra zorlanmaya  başlıyordu.Bundan dolayı 1978 yılında IBM tarafından TribleDES geliştirildi.

         Peki DES algoritmasına alternatif olarak yazılan algoritmada yeni neler vardır.

         Birincisi DES algoritmasınınüç kere üst üste şifrelenmesiyle oluşuyordu.Yane bir tripledes üç kere şifrlenmiş DES algoritmasıdır.İkincisi ve bence en önemlisi anahtar bit düzeyinin 168 bit e yükseltilmesidir.Son olarak üçüncüsü algoritmanın çift yönlü çalışmasıdır.

          İlk dediğim gibi bunlar yenilik peki dezavantajı hiçmi yok.

          Yukarıda  üç kere DES algoritması yapılmasıyla algoritma dönüyor dedik.Ozaman DES e göre üç kat daha yavaştır.Ve artık 3DES yavaş yavaş bitiyor.Halen daha birçok banka,e-ticaret(en çok kullanılan yerler)kullanıyor , ancak AES gibi aynı güvenlik düzeyinde ve altı kat daha hızlı çalışan bir algoritma varken, ömrünün daha uzun seneler gideceği söylenemez.

 

          Şimdi bu bilgilerimizi DES algoritma bilgilerimizle ve teori bilgilerimizle birleştirip  çok basit bir şifreleme programı yazalım.

 

  using System.IO;
using System.Data;
using System.ComponentModel;
using System.Security.Cryptography; 

namespace tripledes

{      

public abstract class sifrele : SymmetricAlgorithm   

{       

public static string sifre(string don, string ekle, string kil)       

 {           

SymmetricAlgorithm tdes = new TripleDESCryptoServiceProvider();  
         
tdes ekle = Convert.FromBase64String(ekle);
  
         
tdes kil = Convert.FromBase64String(kil);
    
       
Byte[] bit = new byte[128];
           

try           
{
                

ICryptoTransform syc = tdes.CreateEncryptor(tdes.ekle, tdes.kil);               
 //byte[] ?=Encoding.UTF8.GetBytes(stringTo……); 
               
bit = Encoding.UTF8.GetBytes(don);
               

MemoryStream mm = new MemoryStream();               
CryptoStream scs = new CryptoStream(mm, syc, CryptoStreamMode.Write);
               

scs.Write(bit, 0, bit.Length);
               
scs.FlushFinalBlock();
               
scs.Close();
               

return Convert.ToBase64String(mm.ToArray());           

 }           

catch (Exception )           
{
                

throw (new Exception("Şifre paketleme tamamlanamadı.", start));          

  }       

 }  
    
   
     }

} 

 


Güvenli Günler Dilerim..
 

Saygı ve Sevgilerimle…