Sezar Şifrelemesi
Last updated
Last updated
Sezar şifreleme algoritmasının tarihçesi oldukça ilginç ve uzun bir geçmişe sahip. Bu algoritma, MÖ 60-50 yıllarında Roma İmparatoru Jül Sezar tarafından devlet haberleşmesinde kullanılmıştır. Sezar şifreleme yönteminin algoritması oldukça basittir. Ana mesajda bulunan herbir harfi mesajda belirtilen anahtar sayısı kadar ileri götürülerek şifreli mesaj oluşturulabilir. Örneğin, “MERHABA” kelimesi “ÖĞTJÇDÇ” olarak şifreleniyor.
Örnek; Sezar şifreleme algoritması için,
n= 3
Ham metin= Siber Vatan
Şifrelenmiş metin= Vlehu Ydwdq
Şimdi, Python ile Sezar şifreleme algoritmasını kodlayalım. Öncelikle, şifreleme işleminin nasıl çalıştığını inceleyelim.
Genel anlamda kodun çalışma mantığına bakarsak Bu örnekte, öteleme değeri 3 olarak belirlenmiştir.
Kod, ilk olarak şifrelenecek mesajı, şifrelenmiş mesajın tutulacağı değişkeni, kullanılacak alfabeyi ve alfabedeki harflerin sayısını tanımlar. sifrelenecekmesaj
değişkeni, "sibervatan" değerini içerirken, sifrelimesaj
değişkeni başlangıçta boştur. alfabe
değişkeni, küçük harflerden oluşan İngilizce alfabeyi içerir ve boyut
değişkeni ise bu alfabenin uzunluğunu (26) tutar. key
değişkeni, harflerin kaç pozisyon ötelenerek şifreleneceğini belirler ve burada 3 olarak ayarlanmıştır.
Daha sonra, şifrelenecek mesajdaki her bir harfi sırasıyla ele alan bir dış döngü başlatılır. İçteki döngü ise her harfi alfabe ile karşılaştırarak eşleşen harfi bulur. Eşleşme bulunduğunda, harfin alfabedeki indexi hesaplanır ve bu index, öteleme değeri kadar arttırılır. Eğer yeni index alfabenin uzunluğunu aşarsa, alfabenin başına dönmek için index, alfabenin uzunluğu kadar azaltılır. Bu işlem, alfabeyi döngüsel olarak kullanmamızı sağlar. Son olarak, öteleme yapılmış harf, şifrelenmiş mesajın tutulduğu sifrelimesaj
değişkenine eklenir.
Tüm harfler işlendiğinde, şifrelenmiş mesaj ekrana yazdırılır. Bu kodu çalıştırdığınızda, "sibervatan" mesajı 3 harf ötelenecek ve şifrelenmiş mesaj "vlehuydwdq" olarak ekrana yazdırılacaktır.
Şimdi, Sezar algoritmasıyla şifrelenmiş bir metni çözmek için bir Python kodu yazalım.
Kod, şifrelenmiş mesajdaki her harfi sırasıyla ele alan bir dış döngü başlatır. İçteki döngü ise her harfi alfabe ile karşılaştırarak eşleşen harfi bulur. Eşleşme bulunduğunda, harfin alfabedeki indexi hesaplanır ve bu index, öteleme değeri kadar azaltılır. Eğer yeni index negatif bir değere düşerse, alfabenin sonuna dönmek için degistir
değeri alfabenin uzunluğu kadar artırılır.
Sonuç olarak, her öteleme yapılmış harf asilmesaj
değişkenine eklenir. Tüm harfler işlendiğinde, çözülen mesaj ekrana yazdırılır. Bu kodun düzeltilmiş hali ile "vlehuydwdq" mesajı çözüldüğünde orijinal mesaj "sibervatan" olacaktır.
İnternet üzerinde pek çok web sitesi ve araç, Sezar şifrelemesini otomatik olarak yapmanızı sağlar. Bu araçlar, kullanıcı dostu arayüzleri sayesinde, şifrelenecek metni ve öteleme değerini (anahtar) girdikten sonra, anında şifrelenmiş veya çözülmüş metni size sunar. Bu sayede, herhangi bir programlama bilgisine sahip olmadan da Sezar şifrelemesinin temel prensiplerini öğrenebilir ve uygulayabilirsiniz. Örneğin boxentriq.com sitesinde sezar algoritmasını deneyelim.
Siteyi ziyaret ettiğimizde, karşımıza basit ve kullanışlı bir arayüz çıkıyor. İlk olarak, şifreleme işlemi için bir anahtar (key) değeri belirlememiz gerekiyor. Bu değer, metnimizin kaç harf ötelenerek şifreleneceğini veya çözüleceğini belirler. Ardından, kullanmak istediğimiz alfabeyi seçip şifreleme veya şifre çözme işlemini kolayca gerçekleştirebiliriz.
Günümüzde kriptografi, dijital güvenliğin temel taşıdır. İnternet üzerinden yapılan finansal işlemlerden kişisel verilerin korunmasına kadar her alanda şifreleme teknikleri kullanılmaktadır. Modern şifreleme yöntemleri arasında hash fonksiyonları, dijital imzalar ve açık anahtarlı şifreleme gibi karmaşık algoritmalar bulunmaktadır. Bu teknikler Sezar’ın basit alfabesel kaydırmasından çok daha ileri bir güvenlik seviyesi sunar.
Bu yöntem, o dönemdeki düşman casuslar için anlaşılması zor bir engel oluşturuyordu. Ancak zamanla sezar şifrelemesi, dilin yapısını ve harflerin sıklığını analiz eden dikkatli gözler için çözülebilir hale geldi. Bu, kriptografinin evriminde önemli bir dönüm noktası ve daha karmaşık şifreleme tekniklerinin geliştirilmesine zemin hazırladı.
-> Kaba kuvvet (brute-force) saldırısıyla çok kolay çözülür. Çünkü Şifreleme/Şifre çözme yöntemi gizli değildir.
-> Sadece 25 (temel Latin alfabesi harf sayısı) farklı deneme yeterlidir. (Anahtar uzayı 25 elemanlıdır.)
-> Şifrelemede; kullanılan alfabenin toplam harf sayısından ancak 1 eksik kadar ileri veya geri alınma tekniği uygulanabilir. Örneğin Türk alfabesi ise 28 ileri veya geri alınabilir. 29 ileri veya geri alınması aynı harfin tekrar denk gelmesini sağlar. Bu da şifrelenecek metnin şifrelenememesine yol açar.
-> Deşifre sırasında; şifreli metin üzerine istenildiği kadar ileri veya geri harf sıralaması uygulanırsa uygulansın mutlaka karmaşık harf diziminden anlamlı sözcük olan, kısacası şifrelenmiş metin kolayca ortaya çıkacaktır.
-> Düz metin (plaintext) ve formatı gizli değildir.
-> Temel Latin alfabesi için harf değiştirme şifrelemelerinde toplam 26! farklı şifre tablosu vardır.
Sezar şifrelemesi, günümüzdeki şifreleme tekniklerinin atası olarak kabul edilir ve kriptografinin tarihindeki yerini korumaktadır. Bilgi güvenliğinin önemi her geçen gün artarken, Sezar’ın antik yöntemi, dijital çağın karmaşık şifreleme tekniklerine ilham veren bir miras olarak anılmaya devam edecektir.