Sezar Şifreleme Nedir? Python ile Nasıl Yapılır?

Sezar şifreleme, adını Roma İmparatoru Julius Caesar’dan alan, tarihin en eski ve en basit şifreleme yöntemlerinden biridir. MÖ 1. yüzyılda Caesar’ın askerî mesajlarını gizlemek için kullandığı bu yöntem, harflerin alfabede belirli bir sayı kadar kaydırılması prensibine dayanır. Peki, bu antik yöntemi Python ile nasıl kodlarız?

Not: Türkçe alfabesi baz alınarak oluşturulmuştur. Farklı alfabelerde doğru şekilde şifreleme yapmayabilir.

Örneğin yazacağımız kelime “Selam” olsun.

HarfAlfabedeki Yeri+3 KaydırmaYeni Harf
s2124u
e58ğ
l1417o
a03ç
m1518ö

Sonuç olarak çıktımız: “uğocö olacaktır. Şimdi Python kodumuzu verelim:

Python

def turkce_kucuk_harf(metin):
    # Önce alfabeyi tanımlayalım
    buyuk = "ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ"
    kucuk = "abcçdefgğhıijklmnoöprsştuüvyz"
    sonuc = []
    for karakter in metin:
        if karakter in buyuk:
            sonuc.append(kucuk[buyuk.index(karakter)])
        else:
            sonuc.append(karakter)
    return ''.join(sonuc)


def sezar_sifrele(metin, kaydirma):
    kucuk_alfabe = "abcçdefgğhıijklmnoöprsştuüvyz"
    n = len(kucuk_alfabe)  # 29
    
    # Önce tüm metni Türkçe kurallarına göre küçük harfe çevir
    metin = turkce_kucuk_harf(metin)
    
    sonuc = []
    for karakter in metin:
        if karakter in kucuk_alfabe:
            index = kucuk_alfabe.index(karakter)
            yeni_index = (index + kaydirma) % n
            sonuc.append(kucuk_alfabe[yeni_index])
        else:
            # Alfabede olmayan karakterler (boşluk, noktalama vb.) aynen korunur
            sonuc.append(karakter)
    
    return ''.join(sonuc)


# Kullanıcıdan kaydırma sayısını al
kaydirma = int(input("Kaydırma sayısını girin: "))

# Kullanıcıdan orijinal metni al
orijinal_metin = input("Orijinal metni girin: ")

# Şifreleme işlemini yap
sifreli_metin = sezar_sifrele(orijinal_metin, kaydirma)

# Sonucu ekrana yaz
print("Şifrelenmiş metin:", sifreli_metin)
# Kod Çıktısı - Örnek 1

Kaydırma sayısını girin: 2
Orijinal metni girin: Yunus YEŞİlmen
Şifrelenmiş metin: avövt aguknogö

# Kod Çıktısı - Örnek 2

Kaydırma sayısını girin: 3
Orijinal metni girin: 5 yeşil elma
Şifrelenmiş metin: 5 bğülo ğoöç

Benzer Yazılar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir