Python İle Sezar Şifrelemeyi Çözme

Daha önce Sezar Şifreleme yöntemi hakkında kısa bir açıklama yapmıştım. Sezar şifresini çözmenin en temel gereksinimlerinden biri de kullanacağımız kaydırma sayısını bilmekti.

Bu kodlarımızda kaydırma sayısını ve şifrelenmiş metni girip çözümlenmiş halini bulmaya çalışacağız.

Python
def turkce_kucuk_harf(metin):
    # 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_sifre_coz(sifreli_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(sifreli_metin)
    sonuc = []

    for karakter in metin:
        if karakter in kucuk_alfabe:
            index = kucuk_alfabe.index(karakter)
            # Şifre çözme: kaydırma miktarını çıkar (negatif yönde kaydır)
            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 şifreli metni al
sifreli_metin = input("Şifreli metni girin: ")

# Şifre çözme işlemini yap
cozulmus_metin = sezar_sifre_coz(sifreli_metin, kaydirma)

# Sonucu ekrana yaz
print("Çözülmüş metin:", cozulmus_metin)
# Ekran Çıktısı 1

Kaydırma sayısını girin: 2
Şifreli metni girin: avövt aguknogö
Çözülmüş metin: yunus yeşilmen

# Ekran Çıktısı 2
Kaydırma sayısını girin: 3
Şifreli metni girin: 5 bğülo ğoöç
Çözülmüş metin: 5 yeşil elma

Benzer Yazılar

Bir yanıt yazın

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