Simetrik Şifreleme..!!

  • Konbuyu başlatan |St_AnGeR|
  • Başlangıç tarihi
S

|St_AnGeR|

Guest
Kimi zaman bu şifreleme metodu gizli anahtar (secret-key) şifreleme olarak da adlandırılır. (belirtilen Sezar şifrelemesi modern olmamasına rağmen simetrik şifreleme olarak kabul edilir). Metni şifreleme işlemi için bir gizli anahtar seçilir ve bu gizli anahtar ile metin şifrelenir (alfabeyi 4 harf sağa kaydırma yukarıdaki örnekte gizli anahtar olarak kabul edililebilir.) Şifrelenmiş metin alıcı kişiye yollanır ve gizli bir şekilde gizli anahtar da alıcı kişiye bildirilir. Şifrelenmiş metni alan kişi bu metni, belirtilen gizli anahtar ile çözüp düzmetne çevirir ve metni okur. Bu şifreleme metodunda ki en büyük dezavantaj gizli anahtarın alıcıya bildirilmesidir. Bu bildirme işlemi üçüncü kişiler tarafından bilinmemelidir. Çünkü gizli anahtarın üçüncü bir kişi tarafından bilinmesi şifrelenmiş metni kolayca çözmesini sağlar.

Bilgisayar üzerinde basit bir simetrik şifreleme yapmanın yolu XOR (özel veya) operatörünü kullanmaktır. XOR operatorü iki bit i karşılaştırıp sadece ve sadece farklı ise 1 değerini verir. Yani diyelim ki A harfinin ascii kodu olan 65 (klavyeden alt tuşuna basılı tutarken numerik klavyeden 65 yazın) sayısını 87 ile XOR işlemine tabi tutmak istiyoruz. Önce 65 sayısının binary şeklinde yazarız daha sonra 87 sayısını yazarız ve bu iki sayının farklı olan bitlerini 1 aynı olan bitlerini 0 olarak işaretleriz.

(128 64 32 16 8 4 2 1)
0 1 0 0 0 0 0 1 = 65 => 'A'
0 1 0 1 0 1 1 1 = 87
----------------------- ^
0 0 0 1 0 1 1 0 = 20 => '¶'elde edilmiş olur


Tersine çevirmek içinde 20 sayını 87 ile XOR işlemine tabi tutarız
0 0 0 1 0 1 1 0 = 20
0 1 0 1 0 1 1 1 = 87
--------------------- ^
0 1 0 0 0 0 0 1 = 65 => 'A' ya geri dönmüş olur.


Xor ile yapılan veri şifreleme örnekleri.Visual C#.Net :



Örnek 1

/*
* Örnek 1
* XorCrypto.cs
* 21.04.2004
*/
using System;

namespace XorCrypto
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
char ch1 = 'A' ;
char ch2 = 'l' ;
char ch3 = 'i' ;

int key = 87 ;

Console.WriteLine("Orjinal mesaj : " + ch1 + ch2 + ch3) ;

//mesajı şifrele
ch1 = (char) (ch1 ^ key) ;
ch2 = (char) (ch2 ^ key) ;
ch3 = (char) (ch3 ^ key) ;

Console.WriteLine("Şifrelenmiş mesaj : " + ch1 + ch2 + ch3) ;

//mesajı çöz
ch1 = (char) (ch1 ^ key) ;
ch2 = (char) (ch2 ^ key) ;
ch3 = (char) (ch3 ^ key) ;

Console.WriteLine("Çözülmüş mesaj : " + ch1 + ch2 + ch3) ;
}
 
ya 01000001 65 in 2 lik tabandaki yazılışı. 65 de A harfinin ascii kodları . mükemmel bi sistem yaa . benim merak ettiğim enigma kodlarının nasıl yazıldığıdır.
 
Geri
Üst