Sezar Şifreleme Algoritması nedir ve sezar şifreleme nasıl yapılır merak edenler için sezar şifrelemenin ne olduğunu kısaca açıklamaya ve örnek bir sezar şifrelemeyi kod bloğu ile açıklamaya çalıştım. Umarım eski içeriklerim arasından yeniden gün yüzüne çıkardığım bu yazı sizin için faydalı olur.

Henüz ilkokulda iken sınıf öğretmenimiz Sayın Mehmet Erik, şayet yanlış hatırlamıyorsam, harf değiştirme şifrelemesini sınıfımıza öğretmişti. Kendisini sevgi ile yad ediyorum ve konumuza dönüyorum.

Sezar şifreleme algoritması bir harf yer değiştirme şifrelemesidir. Örnek vermek gerekirse 8 atlamalı bir şifrelemede “gokhan” kelimesi yerine “owspiv” yazılır. Karşı taraf benim kaç atlamalı şekilde şifrelediğimi biliyorsa kolayca kelimeyi deşifre edebilir.

İlkokul günlerime geri dönecek olursak; kağıtlara bu şekilde şifreleyerek notlar yazar fakat kaç atlamalı şekilde şifrelediğimizi karşı tarafa söylemezdik. Karşı taraftaki arkadaşımız da kağıtta ne yazdığını merak eder ve çözmeye çalışırdı. Brute-force olarak çözmeye çalışırdı ve çözülebilirdi de çünkü nasıl şifrelendiğini hepimiz biliyorduk. Tabi tahmin edilmesi kolay kelimeler tercih ediyor olmamızın da bir etken olabilir fakat son derece eğlenceliydi.

gokhan4.dev

Birçok örneği olduğunu biliyorum fakat Python ile Sezar şifreleme algoritmasını gerçekleştiren bir tutam kod hazırladım, merak edenler inceleyebilir. 8-10 yaşlarında iken bilgisayar ile bu tür eğlenceli işleri yapabileceğimden de haberdar olmak isterdim.

def sifrele(harf, anahtar):

    harf = harf.lower()

    # a = 0, ... z = 25    # a-z 97-123 araliginda :)
    #ord() harf argumaninin unicode kod noktasini int olarak verir
    deger = ord(harf) - 97
    #anahtar degerini ekleyerek kaydiriyoruz
 
    #Latin alfabesinde 25 harf var
    deger = (deger + anahtar) % 26
    # ord() ile yaptigimizin tam tersi :)
    return chr(deger + 97)

def coz(harf, anahtar):

    harf = harf.lower()

    deger = ord(harf) - 97
    #anahtar degerini cikararak kaydir
    deger = (deger - anahtar) % 26
    return chr(deger + 97)

anahtar = input('Anahtar giriniz: ')

print ('anahtar  {} \n'.format(anahtar))
for harf in map(chr, range(97, 123)):
    print ('{} -> {}'.format(harf, sifrele(harf, anahtar)))
print ('')

# mesaji sifreliyoruz, raw_input bize str donuyor :)
saltmetin = raw_input('Salt metni giriniz: ')
print ('saltmetin: {}\n'.format(saltmetin))

sifrelimetin = ''
for harf in saltmetin:
    sifrelimetin += sifrele(harf, anahtar)
print ('sifreli metin: {}\n'.format(sifrelimetin))

desifremetin = ''
for harf in sifrelimetin:
    desifremetin += coz(harf, anahtar)
print ('saltmetin2: {}'.format(desifremetin))