Rust İle Sezar’ın Hakkını Verme

Ateş Bağçabaşı
4 min readFeb 23, 2023

Sezar Şifreleme Yöntemi

Sezar şifreleme, en eski ve en basit şifreleme yöntemlerinden biridir. Tarihi MÖ 100 yıllarına kadar uzanan bu şifreleme yöntemi, adını Roma İmparatorluğu’ndan alan Jül Sezar’dan almıştır.

Sezar şifreleme algoritması, bir mesajdaki harfleri belirli bir sayıda kaydırarak şifrelenmesi işlemidir. Örneğin, harfleri üç harf geriye kaydırdığımızda “ABC” yerine “XYZ” elde edilir. Şifreleme işlemi tamamlandıktan sonra, mesajı çözmek için aynı kaydırma işlemi tersine çevrilir.

Sezar şifreleme algoritması, özellikle tarih boyunca askeri iletişimde kullanılmıştır. Ancak, günümüzde artık pek güvenli bir şifreleme yöntemi olarak kabul edilmemektedir. Çünkü, sezar şifreleme yöntemi oldukça kolaylıkla kırılabilir ve şifrelenmiş mesajları çözmek için birçok teknik kullanılabilir.

Yine de, sezar şifreleme algoritması, temel şifreleme tekniklerini öğrenmek isteyenler için iyi bir başlangıç noktasıdır. Bu şifreleme yöntemi hala birçok programlama diliyle uygulanmaktadır ve yine de bazı basit uygulamalar için kullanılabilir. Ancak, güvenli ve kapsamlı bir şifreleme için bugün daha güçlü algoritmalar tercih edilir.

Bu yazıda, Sezar şifreleme algoritmasını detaylı bir şekilde ele alacağım ve nasıl uygulanabileceğini anlatacağım. Umarım bu yazı sizlere sezar şifreleme algoritması hakkında daha iyi bir anlayış sağlar.

Sezar Şifreleme Yöntemi Çalışma Prensibi

Sezar şifreleme algoritması, bir mesajın her harfini belirli bir sayıda kaydırarak şifreler. Bu kaydırma sayısı anahtar olarak adlandırılır ve genellikle 1 ile 26(yabancı alfabe) arasında bir sayıdır. Örneğin, anahtar 3 ise, A harfi C harfi ile değiştirilir, B harfi D harfi ile değiştirilir ve bu şekilde devam eder.

Şifreleme işlemi tamamlandıktan sonra, şifrelenmiş mesajın her harfi, anahtar sayısı kadar geriye doğru kaydırılarak çözülür. Bu işlem, şifrelenmiş mesajın orijinal metne dönüştürülmesini sağlar.

Sezar şifreleme algoritmasının çalışma adımları şu şekildedir:

  1. Şifrelenecek metin belirlenir ve her harf alfabetik sıraya göre numaralandırılır. Örneğin, A harfi 1, B harfi 2, C harfi 3 şeklinde numaralandırılır.
  2. Anahtar belirlenir. Bu anahtar, her harfin kaç adım geriye kaydırılacağını belirleyen bir sayıdır. Örneğin, anahtar 3 ise, A harfi C harfi ile değiştirilir.
  3. Şifreleme işlemi başlar. Her harf, anahtar sayısı kadar geriye kaydırılarak şifrelenir. Örneğin, “HELLO” mesajı anahtar 3 ile şifrelendiğinde “KHOOR” elde edilir.
  4. Şifrelenmiş mesaj alıcıya gönderilir.
  5. Alıcı, şifreli mesajı çözmek için aynı anahtar sayısı ile her harfi ileriye doğru kaydırır. Bu işlem sonucunda, şifrelenmiş mesaj orijinal metne dönüştürülür.

Sezar şifreleme algoritması oldukça basit bir şifreleme yöntemidir, ancak güvenli bir iletişim için yeterli değildir. Bu nedenle, günümüzde daha güçlü şifreleme yöntemleri kullanılır. Ancak, Sezar şifreleme algoritması hala temel şifreleme yöntemlerini anlamak isteyenler için iyi bir başlangıç noktasıdır.

Sezar’a Güven Olur mu?

Sezar şifreleme algoritması, tarihte kullanılan en eski şifreleme yöntemlerinden biridir. Ancak, günümüzde kullanılan güvenlik standartlarına uygun bir şifreleme yöntemi değildir.

Bunun nedeni, Sezar şifreleme algoritmasının çok kolay kırılabilmesidir. Şifreleme işlemi, belirli bir anahtar değeri kullanılarak metindeki her karakterin belirli bir sayı kadar kaydırılmasıyla gerçekleştirilir. Ancak, anahtar değeri bilinirse, şifreli metnin orijinal haline geri dönüştürülmesi çok kolaydır.Örneğin latin alfabesi için anahtar değeri 28 olmakta, ve şifreli mesaj 28 denemede kırılabilmektedir.

Ayrıca, Sezar şifreleme algoritması, metnin harf sıklıklarını değiştirmediği için frekans analizi gibi basit tekniklerle de kırılabilir. Bu nedenle, günümüzde daha güçlü şifreleme algoritmaları tercih edilmektedir.

Ancak, Sezar şifreleme algoritması hala eğitim amaçlı olarak veya basit mesajların şifrelenmesi için kullanılabilir. Ayrıca, diğer şifreleme yöntemlerinin temel prensiplerini anlamak için de faydalıdır.

Sonuç olarak, Sezar şifreleme algoritması, tarihte önemli bir yere sahip olsa da, günümüzde kullanılan güvenlik standartlarına uygun bir şifreleme yöntemi değildir.

Rust İle Sezar’ın Hakkını Verme

Ve beklenen an geldi. Rust ile sezar’ın hakkını vermeye hazır mısınız? İhtiyacımız olan tek şey rust. Hadi başlayalım!

Öncelikle, encrypt fonksiyonunu tanımlayalım. Bu fonskiyon, metin ve kaydırma miktarı (shift) argümanlarını alır ve şifrelenmiş metni döndürür.

İlk olarak, bir boş sonuç dizesi oluşturuyoruz. Ardından, metnin her bir karakteri için bir döngü oluşturuyoruz. Döngüde, karakterin alfabetik bir karakter olup olmadığı kontrol ediyoruz. Eğer öyleyse, karakterin büyük harfli veya küçük harfli olduğunu belirlemek için ASCII değerini kullanıyoruz. Daha sonra, karakterin alfasayısal indis değeri hesaplayıp verilen kaydırma miktarı ekliyoruz. Bu hesabı tamamladıktan sonra, şifreli karakteri hesaplayıp sonuç arrayine ekliyoruz. Eğer karakter alfasayısal bir karakter değilse, doğrudan sonuç dizesine ekliyoruz.

Şifreleme algoritmasını yazıp, deşifreleme fonksiyonu eklememek olmaz. Şimdi şifreli mesajı gerekli durumda çözmek için bir decrypt fonksiyonu yazalım.

Aşağıdaki koddan anlaşılacağı üzere, bir cipher(şifre) değeri ve bir shift(kaydırma) değeri alıyoruz. Bu değerleri encrypt fonskiyonunu çağırarak içerisine yerleştiriyoruz. Buraya dikkat! shift kısmına 26- shift yazmamızın nedeni alfabetik olarak işlemi başlangıç değerine almak.

Bir örnekle açıklamak gerekirse:

A->1 encrypt(A,3) değeri bize D harfini verecek. D harfini decrypt fonksiyonuna soktuğumuz zaman 26–3 den 23 kez öteleme yapacağız. Bu da bizi tekrardan A harfine ulaştırıyor.

Kodun devam kısmında kullanıcıdan girilen değerleri almak için main fonksiyonunda birkaç tanımlamalar yaptım. Bu kısımı bence geçin, zaman kaybı :)

Bir medium yazısının daha sonuna geldik. Kapanışı yapmadan önce yazıda yazmış olduğum kodlara BURADAN ulaşabilirsiniz.

İşiniz 🦀rust gitsin :)

--

--