16
ERDEMLİ ATL – TL METEM 2012 2013 EĞİTİM ÖĞRETİM YILI NESNE TABANLI PROGRAMLAMA YILLIK ÖDEVİ ŞİFRELEME ALGORİTMALARININ İNCELENMESİ VE YAZILIM GELİŞTİRİLMESİ HAZIRLAYAN : EREN BOZARIK SINIF : 12 ATL NO: 7

ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

ERDEMLİ ATL – TL – METEM

2012 – 2013 EĞİTİM ÖĞRETİM YILI

NESNE TABANLI PROGRAMLAMA YILLIK ÖDEVİ

ŞİFRELEME ALGORİTMALARININ İNCELENMESİ VE

YAZILIM GELİŞTİRİLMESİ

HAZIRLAYAN : EREN BOZARIK

SINIF : 12 – ATL

NO: 7

Page 2: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

1

İÇİNDEKİLER

Şifreleme Algoritmalarının Tarihi …………………………………………………………………………………………. 2 Bilgisayar Programlama Teknolojisinde Kullanılan Şifreleme Algoritmaları ………………………….. 3 C# İle Şifreleme : Hash Şifreleme Algoritmaları ……………………………………………………………………. 3 Hash Şifreleme Yöntemleri…………………………………………………………………………………………………… 3 MD5 algoritması…………………………………………………………………………………………………………………… 4 SHA1 ve SHA256 Algoritmaları…………………………………………………………………………………............ 5 SHA384 ve SHA516………………………………………………………………………………………………………………. 6 C# İle Şifreleme : Simetrik Şifreleme Algoritmaları……………………………………………………………….. 6 Simetrik Şifreleme sisteminin kurulması………………………………………………………………………………. 7 Simetrik Anahtar Kriptosistemler…………………………………………………………………………………………. 8 C# ile DES Şifreleme Yöntemi Örneği……………………………………………………………………………………. 9 C# ile RC2 Şifreleme Yöntemi……………………………………………………………………………………………….. 10 C# ile Rijndael Şifreleme Yöntemi…………………………………………………………………………………………. 11 C# ile Rijndael Şifreleme Örneği……………………………………………………………………………………………. 12 C# İle Şifreleme : Asimetrik Şifreleme Algoritmaları……………………………………………………………… 13 C# ile RSA Şifreleme Yöntemi……………………………………………………………………………………………….. 13 Şifreleme Yöntemleri ile Metin Şifreleme Uygulaması Geliştirme…………………………………………. 14

Page 3: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

2

Şifreleme Algoritmalarının Tarihi

Kriptoloji

Kriptoloji, şifre bilimidir. Çeşitli iletilerin, yazıların belli bir sisteme göre şifrelenmesi, bu mesajların güvenlikli bir ortamda alıcıya iletilmesi ve iletilmiş mesajın deşifresiyle uğraşır. Günümüz teknolojisinin baş döndürücü hızı göz önünde alındığında, teknolojinin gelişmesiyle birlikte ortaya çıkan güvenlik açığının da taşıdığı önem ortaya çıkmaktadır. Kriptoloji; askerî kurumlardan, kişiler arası veya özel devlet kurumları arasındaki iletişimlerden, sistemlerin oluşumunda ve işleyişindeki güvenlik boşluklarına kadar her türlü dalla alakalıdır. Kriptoloji=Kriptografi + Kriptoanaliz Kriptoloji bilmi kendi içerisinde iki farklı branşa ayrılır Kriptografi ; şifreleri yazmak ve Kriptoanaliz ;şifreleri çözmek ya da analiz etmek. Kriptoloji, çok eski ve renkli bir geçmişe sahiptir. Tarihten günümüze kadar, bazı şifreleme teknikleri şunlardır:

1. Sezar şifrelemesi 2. Rotor makinesi (Enigma) 3. Açık anahtarlı şifreleme 4. Çırpı fonksiyonları 5. Veri gizleme teknikleri

Kullanım Alanları İletişim kurmak isteyen iki kişinin bir birlerine e-posta aracılığı ile ileti göndermesini göz önünde tutalım. Bu iletiler bir çok bilgisayardan geçmektedir. A kullanıcısından B kullanıcısına gittiğinde daha önce açılıp okunmadığını veya açılıp üstünde değişiklik yapmadığını bilemeyiz. Bu yüzden devreye kriptolama girmektedir. Kripto teknikleri genelde bu yazıyı daha önce hazırlanmış bir algoritma ile şifreli bir metin haline getirir. Örnek olarak buna Sezar şifresi diyebiliriz. Bir başka iletişim tekniğini göz önüne alırsak, örneğin telsiz haberleşmelerinde de buna benzer sistemler kullanılmaktadır. Ses önce şifrelenir karşıya gönderilir orda şifre açılır ve ses araya başka bir kullanıcı girmeden güvenli bir şekilde teslim edilmiş olur. Dikkat edeceğimiz gibi kriptoloji iletişim materyallerinin kullanıldığı her alanda gizliliği sağlamak için kullanılmaktadır (ses, görüntü, metin v.s ). Askeri ve İstihbarat işlerinde de kullanılır.

Page 4: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

3

Bilgisayar Programlama Teknolojisinde Kullanılan Şifreleme Algoritmaları

C# İle Şifreleme : Hash Şifreleme Algoritmaları

.Net ile beraber bir çok şifreleme kütüphanesi hazır olarak geliyor. Bu şifreleme sınıfları

System.Security.Cryptography kütüphanesi içerisinde yeralmaktadır.

Öncelikli olarak şifreleme yöntemlerini sınıflandırmakta fayda var, şu an dünya üzerinde 3

farklı şifreleme yöntemi bulunmaktadır. Bunlar ;

Hash Şifreleme Yöntemleri

MD5

SHA1

SHA256

SHA384

SHA512

Simetrik Şifreleme Yöntemleri

DES

Triple DES

RC2

Rijndael

Asimetrik Şifreleme Yöntemleri

DSA

RSA

Hash Şifreleme Yöntemleri

Şifrelenen veriye tekrar ulaşmanız mümkün değildir. Şöyleki varsayalım 1000 karakterlik bir

veriyi md5, sha 1, sha256 veya sha512 ile şifrelediniz bu durumda elde edeceğiniz şifrelenmiş

veri algoritma türüne göre standart boyutta bir karakter katarı olacaktır. Pek tabi şöyle bir

soru ortaya çıkacaktır, "eğer şifrelediğim veriye ulaşamayacaksam niye şifreleyim". Bu

sorunun cevabı çok basit, bazı yaptığımız uygulamalarda şifrelenmemiş veriyi görmemiz

gerekmez, örneğin bir forum açtınız, kullanıcılarınız sisteme üye olarak foruma girebilecek.

İşte burada dürüst bir programcı gibi davranarak, kullanıcının girdiği şifre bilgisini Hash

algoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi

sırasında kullanıcının girdiği veriyi tekrar şifreleyip veritabınındaki şifrelenmiş veri ile

karşılaştırabiliriz. Böylece hem kullanıcının şifresini görmeyip kullanıcının özel bilgilerine saygı

göstermiş oluruz hemde veri güvenliği sağlamış oluruz.

Page 5: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

4

Şifreleme örneklerimize başlamadan hemen hemen tüm örneklerde karşımıza çıkacak örnek

fonksiyonları buraya yazalım.

MD5 algoritması, .Net’in kütüphanesinde mevcuttur. Şimdi bu algoritmanın C# dili ile nasıl

kullanılacağını inceleyelim.

MD5 Şifreleme

public static byte[] ByteDonustur(string deger) { UnicodeEncoding ByteConverter = new UnicodeEncoding(); return ByteConverter.GetBytes(deger); } public static byte[] Byte8(string deger) { char[] arrayChar = deger.ToCharArray(); byte[] arrayByte = new byte[arrayChar.Length]; for (int i = 0; i < arrayByte.Length; i++) { arrayByte[i] = Convert.ToByte(arrayChar[i]); } return arrayByte; }

public string MD5(string strGiris) { if (strGiris == "" || strGiris==null) { throw new ArgumentNullException("Şifrelenecek veri yok"); } else { MD5CryptoServiceProvider sifre = new MD5CryptoServiceProvider(); byte[] arySifre = ByteDonustur(strGiris); byte[] aryHash = sifre.ComputeHash(arySifre); return BitConverter.ToString(aryHash); } }

MD5 ( Message-Digest Alghoritm 5) isimli algoritma, günümüzde şifreleme konusunda en

çok kullanılan şifreleme algoritmalarından birisidir. Şifrelemek istenilen veriyi 128 bit

uzunluğunda şifreler ve tek yönlü şifreleme algoritması olarak da bilinir. Genellikle şifre

saklamak için kullanılmaktadır.

Page 6: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

5

SHA1 ve SHA256 günümüz web ve windows uygulamalarında sıklıkla kullandığımız hash adı

verilen şifreleme algoritmalarıdır. Bu makalemizde bu teknikleri kullanmanın aslında ne

kadar kolay olduğunu göreceğiz.

Öncelikle şunu belirtmeliyim, SHA256 ve SHA1 sadece tek yönlü şifreleme yapabilen ve her

zaman aynı sonucu veren fonksiyonlardır. Yani şifreleme sonrasında oluşturulan string ifade,

eski haline çevrilemez. Uygulama geliştirici, oluşturulan string ifadeleri karşılaştırarak

doğruluğu kontrol eder. Günümüz web uygulamalarında özellikle üyelik kayıt, üyelik girişi gibi

işlemlerde kullanılırlar.

SHA1 SHA256 public string SHA1(string strGiris) { if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Şifrelenecek veri yok."); }else { SHA1CryptoServiceProvider sifre = new SHA1CryptoServiceProvider(); byte[] arySifre = ByteDonustur(strGiris); byte[] aryHash = sifre.ComputeHash(arySifre); return BitConverter.ToString(aryHash); } }

public string SHA256(string strGiris) { if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Şifrelenecek Veri Yok"); }else { SHA256Managed sifre = new SHA256Managed(); byte[] arySifre = ByteDonustur(strGiris); byte[] aryHash = sifre.ComputeHash(arySifre); return BitConverter.ToString(aryHash); } }

Verinin şifrelenmesi ve daha sonraki kontrolü şu şekilde bir yaşam döngüsüne sahiptir.

1.Ziyaretçi, bilgilerini üye kayıt formuna girer.

2.Bilgilerden örneğin şifre alanı SHA256 veya SHA1 şifreleme algoritmaları vasıtasıyla

şifrelenerek veritabanına yazılır.

3.Daha sonraki zamanlarda ziyaretçi üye girişi için şifresini girip, siteye giriş yapmak

istediğinde formdan gelen şifre alanı tekrar aynı şekilde şifrelenir.

4.Şifrelenme sonucunda ortaya çıkan string ifade ile veritabanındaki şifre alanındaki

şifrelenmiş string ifade karşılaştırılır.

5.Sonuç aynı ise giriş doğrulanır, eğer farklı ise şifreler birbirini tutmuyor demektir. Bu da

şifrenin ziyaretçi tarafından yanlış girildiğini anlamına gelmektedir.

Page 7: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

6

SHA384 Şifreleme

SHA512 Şifreleme

public string SHA384(string strGiris) { if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Şifrelenecek veri bulunamadı."); }else { SHA384Managed sifre = new SHA384Managed(); byte[] arySifre = ByteDonustur(strGiris); byte[] aryHash = sifre.ComputeHash(arySifre); return BitConverter.ToString(aryHash); } }

public string SHA512(string strGiris) { if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Şifrelenecek veri yok."); } else { SHA512Managed sifre = new SHA512Managed(); byte[] arySifre = ByteDonustur(strGiris); byte[] aryHash = sifre.ComputeHash(arySifre); return BitConverter.ToString(aryHash); } }

C# İle Şifreleme : Simetrik Şifreleme Algoritmaları

Simetrik şifreleme yöntemlerinde şifrelenen veriye ulaşmak için şifreyi çözen tarafın veriyi

şifreleyen tarafla aynı anahtara ihtiyacı vardır. C# Simetrik şifreleme yöntemlerinden 3

tanesini hazır olarak bize sunar.

Bilgisayar bilimlerinin önemli konularından birisi de veri güvenliğidir. Bu konuda yapılan

çalışmaların bir kısmı şifreleme (cryptography) başlığı altında toplanabilir. Basitçe

matematiksel yöntemler kullanılarak verinin anlaşılmaz hale gelmesi ve ancak doğru kişiler

tarafından açılması olarak tanımlanabilecek şifreleme işlemi simetrik ve asimetrik şifreleme

(public key cryptography) olarak iki grupta toplanabilir.

Simetrik şifrelemede genelde şifreleme işlemi bir anahtar (key) marifetiyle olur. Bu anahtar

iki taraf tarafından daha önceden bilinen bir bilgidir ve bir tarafın anahtar ile şifrelediği bilgi

diğer taraftaki anahtar ile açılabilir.

Page 8: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

7

Aşağıdaki şekilde basit bir simetrik şifrelemede bulunan iki taraf görülmektedir.

Yandaki şekilde şifreleme sistemimizi kullanan iki kişi gösterilmektedir. Bir taraf şifreleyen (Ali) diğer taraf ise şifreyi açan (Bekir) taraf olarak kabul edilsin. Burada kullanılan isimler genelde şifreleme literatüründe Alice ve Bob olarak geçer ancak yazının Türkçe olmasından dolayı yine aynı baş harflerle başlayan (alfabenin ilk iki harfi olan A ve B) iki farklı isim uydurulmuştur.

Simetrik Şifreleme sisteminin kurulması

Simetrik şifreleme sistemlerinin ilk aşaması sistemin kurulmasıdır. Bu aşama bazı şifreleme

sistemlerinde sadece bir anahtarın iki taraf tarafından bilinmesi kadar basitken bazı

sistemlerde karmaşık hesaplamalar sonucunda elde edilir. Örneğin en basit simetrik

şifreleme yöntemlerinden birisi olan kaydırma şifrelemesini (shift cipher) ele alalım.

Mesajda bulunan harfler alfabetik olarak (lexiconically) anahtar kadar kaydırılır. Örneğin

anahtar 2 ise her harf alfabede kendinden iki sonraki harf olacaktır (a->c , l->n veya z->b

şeklinde).

Bu sistemdeki anahtarın iki taraf tarafından bilinmesi yeterlidir. Yani 2 bilgisinin bir şekilde

hem şifreleyen hem de şifreyi açan kişi tarafından önceden bilinmesi sistemin kurulması

aşamasıdır.

Bu anahtar değişimi aşaması için çeşitli algoritmalar mevcuttur. Örneğin diffie-hellman anahtar değişim algoritması (diffie-hellman key Exchange aglorithm) okunabilir. Yandaki şekilde iki taraf da sistemi kurup hazır olduktan sonra şifreleme aşamasına geçilir.

Page 9: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

8

Simetrik Şifreleme Örneği public static byte[] ByteDonustur(string deger) { UnicodeEncoding ByteConverter = new UnicodeEncoding(); return ByteConverter.GetBytes(deger); } public static byte[] Byte8(string deger) { char[] arrayChar = deger.ToCharArray(); byte[] arrayByte = new byte[arrayChar.Length]; for (int i = 0; i < arrayByte.Length; i++) { arrayByte[i] = Convert.ToByte(arrayChar[i]); } return arrayByte; }

Simetrik Anahtar Kriptosistemler Simetrik kriptosistemlerde, şifreleme anahtarının deşifreleme anahtarından üretilmesi oldukça kolaydır. Çoğu simetrik algoritmalarda, şifreleme ve deşifreleme için kullanılan anahtar aynıdır. Bu algoritmaların güvenliği anahtara bağlı olduğundan anahtar gizli tutulmalıdır. Simetrik anahtar kriptosisteminin genel yapısı yandaki şekilde görülmektedir.

Simetrik anahtar kriptosistemi

Simetrik anahtarlı şifreleme yöntemleri, yerine koyma, yer değiştirme ve cebirsel yöntemler

olarak sınıflandırılabilir.Yerine koyma şifreleme yönteminde orijinal mesajın harfleri başka bir

alfabenin harfleriyle değiştirilir. Açık metindeki harflerin ardışıklığı değişmez. Yer değişme

şifreleme yönteminde açık metin harflerinde değişiklik olmaz. Harflerin yeniden

düzenlenmesi için çeşitli yöntemler mevcuttur. Cebirsel şifreleme yöntemleri ise iki

aşamadan oluşmaktadır. Birinci aşamada, açık metne yerine koyma şifreleme yöntemi, ikinci

aşamada ise rasgele bir yer değişme şifreleme yöntemi uygulanır.

Bunlar dışında tekil olmayan matrislerle şifreleme ve DES simetrik anahtar şifreleme

algoritmalarındandır. DES (Data Encryption Standard), 64 bitlik bloklar halinde şifreleme

yapan bir blok şifreleyicisidir

Aşağıda DES şifreleme yöntemine bir örnek verilmiştir.

Page 10: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

9

C# ile DES Şifreleme Yöntemi Örneği public string DESSifrele(string strGiris) { string sonuc = ""; if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Şifrelenecek veri yok"); } else{ byte[] aryKey = Byte8("12345678"); // BURAYA 8 bit string DEĞER GİRİN byte[] aryIV = Byte8("12345678"); // BURAYA 8 bit string DEĞER GİRİN DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(aryKey, aryIV), CryptoStreamMode.Write); StreamWriter writer = new StreamWriter(cs); writer.Write(strGiris); writer.Flush(); cs.FlushFinalBlock(); writer.Flush(); sonuc = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); writer.Dispose(); cs.Dispose(); ms.Dispose(); } return sonuc; } public string DESCoz(string strGiris) { string strSonuc = ""; if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Şifrelenecek veri yok.");} else { byte[] aryKey = Byte8("12345678"); byte[] aryIV = Byte8("12345678"); DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); MemoryStream ms = new MemoryStream(Convert.FromBase64String(strGiris)); CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateDecryptor(aryKey, aryIV), CryptoStreamMode.Read); StreamReader reader = new StreamReader(cs); strSonuc = reader.ReadToEnd(); reader.Dispose(); cs.Dispose(); ms.Dispose(); } return strSonuc; }

Page 11: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

10

C# ile RC2 Şifreleme Yöntemi

RC2 algoritması 8 bit anahtar ve 8 bit iv değeri kullanır.

public string Sifrele(string strGiris) { string sonuc = ""; if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Şifrelenecek veri yok."); } else { byte[] aryKey = Byte8("12345678"); byte[] aryIV = Byte8("12345678"); RC2CryptoServiceProvider dec = new RC2CryptoServiceProvider(); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, dec.CreateEncryptor(aryKey, aryIV), CryptoStreamMode.Write); StreamWriter writer = new StreamWriter(cs); writer.Write(strGiris); writer.Flush(); cs.FlushFinalBlock(); writer.Flush(); sonuc = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); writer.Dispose(); cs.Dispose(); ms.Dispose(); } return sonuc; } public string Coz(string strGiris) { string strSonuc = ""; if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Şifresi çözülecek veri yok."); } else { byte[] aryKey = Byte8("12345678"); byte[] aryIV = Byte8("12345678"); RC2CryptoServiceProvider cp = new RC2CryptoServiceProvider(); MemoryStream ms = new MemoryStream(Convert.FromBase64String(strGiris)); CryptoStream cs = new CryptoStream(ms, cp.CreateDecryptor(aryKey, aryIV), CryptoStreamMode.Read); StreamReader reader = new StreamReader(cs); strSonuc = reader.ReadToEnd(); reader.Dispose(); cs.Dispose(); ms.Dispose() } return strSonuc; }

Page 12: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

11

C# ile Rijndael Şifreleme Yöntemi

Rijndael Şifreleme Algoritması Galois’in alan teorisi üzerine kurulu olan Rijndael, DES gibi yer

değiştirme ve permütasyon tekniklerini bir çok defa kullanarak şifrelemeyi gerçekleştiren bir

şifreleme algoritmasıdır.

Rijndael algoritmasının nasıl gerçekleşebileceğimizi inceleyeceğiz. Zorluk Derecesi: 1 2 3 4 5

Anahtar Sözcükler: Şifreleme Algoritması, Rijndael, DES, Microsoft .NET, Kriptoloji Galois’in

alan teorisi üzerine kurulu olan Rijndael, DES gibi yer değiştirme ve permütasyon tekniklerini

bir çok defa kullanarak şifrelemeyi gerçekleştirmektedir.

Kaç sefer bu yer değiştirme ve permütasyon tekniklerinin tekrarlanacağı anahtar ve blok

boyutuna bağlıdır. Örneğin, 128 bitlik anahtar ve 128 bitlik blok boyutları ile yapılacak

şifreleme için bu tekrar sayısı 10’dur. DES’ten farklı olarak donanım ve yazılım olarak

yapılmasının kolay olması için bütün işlemler tüm byte’ları kullanmaktadır(Geri besleme

boyutu blok boyutuna eşittir).

Bu algoritma oldukça hızlı çalışması yönüyle tercih edilmektedir.Microsoft .NET Framework’

te System.Security.Cryptography altında yer alan Rijndael soyut sınıfı Rijndael algoritmasını

gerçeklemek isteyen sınıflar için ana sınıfı tanımlar. Rijndael sınıfında yer alan erişilebilir

özellikleri şunlardır: BlockSize, kriptografik işlemler için kullanılacak olan blok boyutunu bit

olarak belirtir. Varsayılan değeri 128 bit dir.

Page 13: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

12

C# ile Rijndael Şifreleme Örneği Rijndael algoritması 8 anahtar ve 16 bit iv değeri kullanır. public string Sifrele(string strGiris) { string sonuc = ""; if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Şifrelenecek veri yok."); } else { byte[] aryKey = Byte8("12345678"); byte[] aryIV = Byte8("1234567812345678"); RijndaelManaged dec = new RijndaelManaged(); dec.Mode = CipherMode.CBC; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, dec.CreateEncryptor(aryKey, aryIV), CryptoStreamMode.Write); StreamWriter writer = new StreamWriter(cs); writer.Write(strGiris); writer.Flush(); cs.FlushFinalBlock(); writer.Flush(); sonuc = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); writer.Dispose(); cs.Dispose(); ms.Dispose();} return sonuc;} public string Coz(string strGiris) { string strSonuc = ""; if (strGiris == "" || strGiris == null){ throw new ArgumentNullException("Şifrezi çözülecek veri yok.");} Else { byte[] aryKey = Byte8("12345678"); byte[] aryIV = Byte8("1234567812345678"); RijndaelManaged cp = new RijndaelManaged(); MemoryStream ms = new MemoryStream(Convert.FromBase64String(strGiris)); CryptoStream cs = new CryptoStream(ms, cp.CreateDecryptor(aryKey, aryIV), CryptoStreamMode.Read); StreamReader reader = new StreamReader(cs); strSonuc = reader.ReadToEnd(); reader.Dispose(); cs.Dispose(); ms.Dispose(); } return strSonuc; }

Page 14: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

13

C# İle Şifreleme : Asimetrik Şifreleme Algoritmaları

Asimetrik şifreleme yöntemleri ileri düzey şifreleme yöntemleridir. Bu algoritma türünde

veriyi şifreleyen taraf ile veriyi çözecek olan taraf birbirinden farklı anahtarlar kullanırlar.

C# ile RSA Şifreleme Yöntemi

public static byte[] ByteDonustur(string deger) { UnicodeEncoding ByteConverter = new UnicodeEncoding(); return ByteConverter.GetBytes(deger); } public static byte[] Byte8(string deger) { char[] arrayChar = deger.ToCharArray(); byte[] arrayByte = new byte[arrayChar.Length]; for (int i = 0; i < arrayByte.Length; i++) { arrayByte[i] = Convert.ToByte(arrayChar[i]); } return arrayByte; }

public string Sifrele(string strGiris, out RSAParameters prm){ string strSonuc = ""; if (strGiris == "") { throw new ArgumentNullException("Şifrelenecek veri yok."); } else { byte[] aryDizi = ByteDonustur(strGiris); RSACryptoServiceProvider dec = new RSACryptoServiceProvider(); prm = dec.ExportParameters(true); byte[] aryDonus = dec.Encrypt(aryDizi, false); strSonuc = Convert.ToBase64String(aryDonus); } return strSonuc; } public string Coz(string strGiris, RSAParameters prm) { string strSonuc = ""; if (strGiris == "" || strGiris == null) { throw new ArgumentNullException("Çözülecek kayıt yok"); } else { RSACryptoServiceProvider dec = new RSACryptoServiceProvider(); byte[] aryDizi = Convert.FromBase64String(strGiris); UnicodeEncoding UE = new UnicodeEncoding(); dec.ImportParameters(prm); byte[] aryDonus = dec.Decrypt(aryDizi, false); strSonuc = UE.GetString(aryDonus);} return strSonuc;

Page 15: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

14

Şifreleme Yöntemleri ile Metin Şifreleme Uygulaması Geliştirme

Alfabede bulunan karakterlerinin sayı sırasına göre metinleri şifreleme

yöntemini yani Matris Metin Şifreleme ile birleştirerek uygulamamızı

geliştireceğiz.

ÖRNEK :

Matris Metin Şifreleme using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string harfSeti = @"ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZXWQ.?!,' "; var harfler = harfSeti.ToCharArray().Select((s, i) => new { harf = s, index = i }); string rich1; rich1 = Console.ReadLine(); var cryted = rich1.ToCharArray().Join(harfler, h => h, hi => hi.harf, (h, hi) => hi.index); var sira1 = String.Join("", cryted.Where((c, i) => i % 2 == 0)); var sira2 = String.Join("", cryted.Where((c, i) => i % 2 == 1)); string rich2 = sira1 + '\n' + sira2; Console.WriteLine(rich2); Console.ReadKey(); } } }

Page 16: ERDEMLİ ATL - WordPress.comalgoritma ile şifreleyip veritabanımızda saklamak daha doğru olacaktır. Böylece login işlemi ... Örneğin diffie-hellman anahtar değişim algoritması

15

Proje :

https://hotfile.com/dl/187598113/5f9f848/MatrisSistemi.rar.html

Kaynaklar :

http://en.wikipedia.org/wiki/RSA_(algorithm)

http://ultrastudio.org/en/RSA_encryption_algorithm

http://www.networksorcery.com/enp/data/encryption.htm

http://tdsoftware.wordpress.com/tag/aes-rijndael-sifreleme-algoritmasi/