Ayın Konusu: AES Şifreleme Algoritması ile Veri Şifreleme ve Çözümleme! | Burak ÖZKAN
Kriptoloji geçmişten günümüze kadar kadar kullanılan bir şifreleme bilimidir ve veri iletişiminin güvenliğini matematiksel fonksiyonlarla sağlamaktadır. Günümüzde çeşitli şifreleme algoritmaları mevcutdur; MD5, SHA1, RSA, RC4, AES gibi çeşitli şifreleme algoritmaları mevcuttur. Biz bu makalede AES algoritmasını inceleyeceğiz. .NET Kütüphanesinden bulabileceğiniz bu algoritmaya ben kendim internetten bulduğum C kodunu C# koduna çevirerek sizlere vereceğim. Yaptığım AES sınıfının kullanımına bakalım şimdi;
Ayın Konusu: Programımıza çoklu dil desteği nasıl yapabiliriz!	Ekim Ayında Sitemde!
16 Responses to Ayın Konusu: AES Şifreleme Algoritması ile Veri Şifreleme ve Çözümleme!
01 14 Mayıs 2016
aes.cs adlı sınıfın içerisinde int dizi oluşturup içerisine random sayılar belirtmişiniz bu ne işe yarıyor?
Bu algoritma 16 byte veriyi şifreliyor doğal olarak sende txt dosyasından 16 karakteri şifreleyebilirsin. TXT dosyasından 16 karakter alıp aes dizisine yerleştirip encrypt, decrypt işlemlerini yapabilirsin.
ali 10 Ekim 2012
Kodunu karakterleri text dosyasından alıcak şekilde değiştirdim. Şimreleme işleminde bir sıkıntı olmamasına ragmen şifrelenen karakterlerin çözümü sırasında 64 karakterden sonrasında program hata veriyor. private void substitution_Si() fonksyonu içindeki block[i] = Si_table[(block[i] – 1)]; block değeri 255 i geçtiği için hata veriyor. çözüm önerin varmı?
kemal 15 Eylül 2010
bir de veri ve anahtar girdim şifrelem yaptım şifreledi ancak aynı anahtarı kullanmasına rağmen aynı veriyi elde edemedim
çalışan uygulamasını haftaya yazarız demişsiniz ama malesef yazmamışsınız ilgilenirseniz sevinirim
Burak 10 Şubat 2010
En son byte’ı böyle bir kontrol için kullanabilirsiniz. Örnek olarak 0x1, 0x2, 0x3, …., 0xD, 0xE verileri sizin şifrelemek istediğiniz veriler olsun. Dizinin son byte’ına şifrelemek istediğiniz verileri toplayın ve son byte’ını alın. Örnek olarak topladığınız değer 0x203 çıktı siz 0x03’ü alın ve dizinin son elemanına yazın ve şifreleyin. Eğer yanlış bir key ile şifreyi açtığınızda son byte doğru olmayacaktır. Böylece yanlış bir şifre ile açıldığı ortaya çıkacaktır.
kenan 10 Şubat 2010
merhabalar peki girilen keyin doğru yanlış olduğunu belirmek gerekirse ne yapmalıyız. mesela bir metni şifreleyip dosyaya kaydettim sonra uygulama ile çözmek istiyorum decrypt işleminden sonra dönen datanın doğru olup olmadığına uygulamanın karar vermesini istiyorum data doğru değilse hatalı parola mesajı vermek istiyorum. güvenlik tehdidi oluşturmadan bunu nasıl yapabilirim. dataya belirli bir metin ekleyip dönen metinde onumu arayıp varsa parola doğrudur demek sadece çözüm olarak aklıma geldi ama bu metni eklemek kırıkmasını kolaylaştıracak bir durum. bu sorun için nasıl bir çözüm kullanılıyor? öneriniz nedir? .teşekkürler…
Burhan 06 Aralık 2009
Tamam teşekkürler herşey için…
Burak 06 Aralık 2009
Evet kafadan bir değer verebilirsiniz verdiğiniz o KEY sizin kapıyı açan anahtarınız. O verdiğiniz değer okunduğunda anlamsız olan sayıları anlamlı hale getiren bir değer.
Olursa çok sevinirim. Burdan şunu çıkartıyorum o zamam.
Ordaki Key değişkeni bizim şifreleme kuralımız oluyor öylemi Yani Key e kafadan bi değer verebilir miyiz?
Yanlış yazılmış orada makalede de hemen düzeltiyorum. Orası ‘sifrelenecekData’ olacak. Yani aes.block dizisi içinde, encrypt ve decrypt işlemlerinden sonra şifreli ya da şifresiz data oluyor. Bunu kullanan örnek bir uygulama henüz yapmadım ama önümüzdeki hafta içinde hazırlar siteme koyarım.
Anladım. Teşekkürler açıklama için.
Son bi sorun ben bu algoritmayı kullanamadım.
Yukarda verdiğiniz örnekte
aes.block = sifrelenecekByte;
Bu son yazdıgınız sifrelenecekByte değişkeni nerden geliyor anlamadım.
Tam olarak çalışan bir öreğiniz varmı acaba.
Sadece bu sınıfı kullanan kod parçası yeterli olur benim için.
Benim orada kastetmek istediğim ‘KEY’ kısmının sadece programcı tarafından bilinmesi. Eğer o KEY bilinmezse veriyi doğru bir şekilde ‘decrypt’ edemez. Etse bile yanlış bir veri elde eder. Sizin dediğiniz sanırım şu eğer bir şekilde benim KEY’im başkasının eline geçerse veriyi açabilir ama o çıkarttığım sayıyı bilemeyeceği için yine doğru veriyi elde edemez. Açıkcası aes algoritmasında KEY’i ele geçiren birinin ufak bir çıkartma işleminde pek fazla takılacağını zannetmem. Ufak bir örnek alma ile çok rahat çözer diye düşünüyorum.
Anladım mantıklı.. Karakterlerin Ascii değerini al sonra bu değerleri şifrele 2 kez dönüştürme işlemi olacak ama olsun..
Bu key sizin güvenliğinizi sağlayacaktır. Verinizi bu ‘KEY’ ile şifreledikten sonra veritabanınıza kaydettiğinizi düşünün. Eğer dışarıdan biri veritabanınıza erişse bile veriler şifreli olduğu için ve ‘KEY’i bilmediğinden veritabanında ki datalar onun için hiçbirşey ifade etmeyecektir.
Aes algoratmasını bilen biri bu bilgiyi alarak decrypt() yaparsa şifreyi elde etmiş olmaz mı?
Bence bunu kullanan kişi şifreleyeceği sayıya kafadan küçük bir sayı ekleyip encrypt() yapmalı decrypt() yaptıktan sonra da bu sayıyı o değerden çıkartmalı
diye düşünüyorum bu sayede şifresi bilinmez olabilir.
diye tekrar düşünüyorum… 🙂
C#’da int türüne atama yapılan türleri şifreliyor. Yani byte türünden bir diziyi şifreleyebilir ama string türünü şifreleyemiyor. Bununda çözümü ASCII Encoding ile yazının byte değerlerini alıp şifreleyebilirsiniz.
Merhabalar bu algoritma sadece int türünde veri mi şifreliyor?